我有一个索引视图,它采用如下的页面参数:
/News?page=2
但是在该视图的布局中,我有这个小动作:
@{Html.RenderAction("Index", "Comments", new {page=1, pagesize = 10});}
但查询字符串“页面”仍为2 ..怎么来的?以及如何覆盖子进程的页面?
答案 0 :(得分:1)
这是因为子操作在绑定值时首先查看原始请求查询字符串,然后将该参数作为参数传递给 RenderAction
帮助程序。您可以为此参数使用其他名称以避免这种歧义。
更新:
无法重现您描述的行为。
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[ChildActionOnly]
public ActionResult Test(string page)
{
return Content(page, "text/html");
}
}
查看(~/Views/Home/Index.cshtml
):
@{Html.RenderAction("Test", "Home", new { page = 1 });}
查询/Home/Index?page=5
时,会显示正确的值1,并且子操作中的page
参数为1。
显然,如果在你的孩子行动中,你是从请求手动获取这个值,它将无法正常工作,但这不是你应该做的事情:
[ChildActionOnly]
public ActionResult Test()
{
string page = Request["page"] as string;
return Content(page, "text/html");
}