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と、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 に答える