【发布时间】:2014-02-03 13:48:36
【问题描述】:
我想在单击ActionLink 时将模型和int 传递给控制器。
@Html.ActionLink("Next", "Lookup", "User", new { m = Model.UserLookupViewModel, page = Model.UserLookupViewModel.curPage }, null)
不起作用,而是传递模型的一个空白实例,这是使用new 时所期望的。
@Html.ActionLink("Next", "Lookup", "User", Model.UserLookupViewModel, null)
确实有效。
控制器
[HttpGet]
public ActionResult Lookup(UserLookupViewModel m, int page = 0)
{
return this.DoLookup(m, page);
}
查看模型
public class UserLookupViewModel
{
public int curPage { get; set; }
[Display(Name = "Forenames")]
public string Forenames { get; set; }
[Display(Name = "Surname")]
public string Surname { get; set; }
[Display(Name = "DOB")]
public DateTime? DoB { get; set; }
[Display(Name = "Post code")]
public string Postcode { get; set; }
}
如何将它们一起传递? Lookup 方法的参数与 ActionLink 中的命名属性匹配。
【问题讨论】:
-
你不能使用 ActionLink 传递模型
-
MVC4 允许您通过 URL 变量自动传递模型,这是我的第二个示例。
-
ActionLink 的文档显示该方法的所有重载都不接受视图模型对象。 msdn.microsoft.com/en-us/library/… 您可以传递 RouteValues,根据您的第二个示例,但不能传递整个对象。
-
假设视图模型的属性由页面上的控件填充,我只想发布一个表单,向我们展示您的剃须刀代码。
-
为什么要使用 ActionLink 而不是发布表单?
标签: asp.net asp.net-mvc