【发布时间】:2011-07-27 20:26:55
【问题描述】:
我的域设置类似于
public class Pagination
{
public int? Page { get; set; }
}
public class IndexViewModel
{
public Pagination Pagination { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index(IndexViewModel model, Pagination pg, string page)
{
return View(model);
}
}
当我导航到/?Page=5 时,我希望 5 是 model.Pagination.Page 的值也为 5,但似乎 MVC 不会绑定超过 1 层深度的查询参数。
我能做些什么来改变这种情况?
或者更改此设置比它的价值更麻烦?我应该这样做
public class HomeController : Controller
{
public ActionResult Index(IndexViewModel model, Pagination pg, string page)
{
model.Pagination = pg;
return View(model);
}
}
*注意三重参数是为了说明它不会填充 IndexViewModel 但它会填充其他两个参数,因为它们的深度为 0 或 1 层。
【问题讨论】:
-
查询参数不是
/?Pagination.Page=5,那么为什么期望model.Pagination.Page会被设置呢?模型绑定器应该设置pg.Page(以及page),因为你现在有你的签名,但我认为你的期望是不正确的。 -
因此我的问题是我该怎么做才能使它填充来自
page=5的model.Pagination.page
标签: asp.net asp.net-mvc asp.net-mvc-3 modelbinders querystringparameter