我有一个局部视图的主视图。 部分视图允许分页,我正在使用Bootstrap。
控制器:
public ActionResult Main()
{
return View();
}
//[ChildActionOnly]
public ActionResult _Partial(int page)
{
Model = //returns records for requested page
return View(Model);
}
查看:
<ul class="pagination">
@for (int i = 1; i <= model.TotalPages; i++)
{
<li>@Html.ActionLink(i.ToString(), "_Partial", new { page = i, })</li> }
}
</ul>
我的问题是,虽然分页工作正常,但选择一个页面会直接调用_Partial Action(在我删除[ChildActionOnly]
之后
因此,在分页时,它只加载部分视图而没有构成其中一部分的主视图......因此它缺少主视图或任何格式提供的“框架”。
我应该采用不同的方法,还是有办法调用部分行动并采取主要行动?
我想我会喜欢做类似......
<li>@Html.ActionLink(i.ToString(), "Main + _Partial", new { page = i, })</li>
或者我如何才能获得Bootstrap Paging(我不想使用Ajax路由)来处理部分视图?
答案 0 :(得分:0)
如果您不想使用ajax,则必须返回整个页面。这是一个例子:
控制器:
public ActionResult Main()
{
return View();
}
public ActionResult SomeAction(int page) //Name this as your like
{
// I use viewbag here for convenience,
//you should consider to create new view model if necessary.
ViewBag.PageNum = page;
return View();
}
//[ChildActionOnly]
public ActionResult _Partial(int page)
{
Model = //returns records for requested page
return View(Model);
}
查看“SomeAction.cshtml”:
@*Put your Main page content here*@
@Html.Action("SomeAction", "YourControllerName", new { page = ViewBag.PageNum })
@*Put your Main page content here*@
你的分页应改为:
<ul class="pagination">
@for (int i = 1; i <= model.TotalPages; i++)
{
<li>@Html.ActionLink(i.ToString(), "SomeAction", new { page = i, })</li> }
}
</ul>
请记住,我之所以创建“SomeAction”只是因为我不知道你的“主要”动作到底是做什么的。如果“Main”只是第一页,那么你应该将“SomeAction”和“Main”合并为一个:
public ActionResult Main(int page = 1)
{
ViewBag.PageNum = page;
return View();
}