1

我的域设置类似于

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 层。

4

1 回答 1

0

你的方法签名不应该是......

public ActionResult Index(int? page)
{
    var model = new IndexViewModel{
                        Pagination = new Pagination { Page = page ?? 1 } };
    if(page.HasValue)
        model.Stuff = StuffGenerator
                          .GetStuff()
                          .Skip(page.Value * _pageSize)
                          .Take(_pageSize);
    else
        model.Stuff = StuffGenerator.GetStuff().take(_pageSize);
    return View(model);
}

您的示例听起来像 GET,但看起来像 POST。

于 2011-04-01T17:17:53.320 回答