我正在使用MVC2创建一个单页网站,因此在HTML div中可以看到一些不同的页面:
==========
|Section1|
| |
==========
==========
|Section2|
| |
==========
==========
|Section3|
| |
==========
让我们调用此着陆页/ Home / Index - 在Home / Index视图中,只有几个RenderAction调用来渲染Section1 / Index,Section2 / Index和Section3 / Index - 每个部分都是一个控制器。
在不同的点上,Section1,Section2或Section3的不同部分将通过向/ Section1 / Part1或/ Section2 / Part3等发出Ajax请求加载到它们各自的div中。
我已经知道,第一次加载页面的最佳方法是为每个部分提供部分视图,并将其放入。
但是说我想在没有的情况下使用AJAX请求去/ Section2 / Part3 ,这是确保我在页面上显示Section1,Section2和Section3的最佳方法,而是在Section2的默认部分视图中,我们显示了Part3。
任何想法都将受到赞赏:)
我得到的是:以某种方式从Section动作a / Home / Index视图返回,并且需要知道要呈现指定部分的Model数据 - 但我不想重定向,因为URL需要保持不变。
希望这是有道理的。谢谢:))
P.S。不使用.NET Ajax。
答案 0 :(得分:3)
我认为您的问题可以通过在您的操作方法中使用Request.IsAjax
来解决。如果您有AJAX请求,请返回部分视图。如果没有,请返回包含部分的常规视图。
public ActionResult Part1() {
/* Other code here */
if(!Request.IsAjax)
return View("Part1Full");
return View();
}
在Part1Full
视图中,只需致电RenderPartial("Part1")
即可。我假设如果你拨打RenderAction("Part1")
但是如果没有查看[ChildActionOnly]
属性,它也会有效。您可以在here找到更多相关信息。