asp.net-mvc - 为什么在 "new"中使用 "ActionLink"作为 Route Values ---- 例如

标签 asp.net-mvc

下面有两个例子:

     @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/

相关文章:

c# - Kendo UI 输入焦点 - 选择和 Ajax 调用后,DropdownList 保留焦点

asp.net-mvc - 通用列表属性的必需属性

asp.net-mvc - 如何在 asp.net mvc 中更改 url 中的 Controller 名称

c# - ASP.NET MVC 2 显示()

asp.net-mvc - UrlHelper扩展方法调用编码未执行

asp.net-mvc - 删除 *.cs、*.Designer.cs 代码隐藏文件?

c# - 如何在不使用 `DisplayNameAttribute` 的情况下更改 ViewModel 显示名称?

asp.net-mvc - 如何使用 Sitecore MVC 设置 Ioc (Autofac)

html - 如何在 ASP.Net MVC 中使用不同的 Bootstrap 主题?

asp.net-mvc - 在 ASP.NET MVC 中向 View 公开多个对象的最佳方法是什么?