下面有两个例子:
@Html.ActionLink("Create New", "Create", new { id = Model.Id })
和,
return RedirectToAction("Index", new { id = review.RestaurantId });
我的问题是关于对象路由值中新的 { id = xxx} 部分。为什么我们在这种情况下使用"new"?它到底是做什么的?在这种情况下它是否初始化“id”变量?
此外,奇怪的是,这些方法、创建和索引定义只能采用路由值中定义的参数...
也就是说,
public ActionResult create { int id)
{ ...}
是正确的,但下面是错误的......
public ActionResult create { int somethingelse)
{ ...}
所以请告诉我前两个示例中的新 {id = xx} 是做什么的?
谢谢
最佳答案
new {} 创建一个 Object 类型的新对象。类型是匿名的。在编写以“select new {x = "foo".y="bar"}”结尾的 linq 查询时,您会看到该语法。在将对象设置为类型“var”时经常使用它。
您在 ActionLink 中所做的是提供路由值。 MVC 获取对象中的属性和值,并将它们放入请求的 QueryString 中。这就是您所说的“魔法”。您可以在 Controller Action 中设置断点并检查“HttpContext.Request.QueryString”以查看它。
Action 方法的输入值必须与通过 QueryString 传入的属性相匹配。
关于asp.net-mvc - 为什么在 "new"中使用 "ActionLink"作为 Route Values ---- 例如,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22644585/