.NET MVC2 Master上的多个部分视图,也可以通过AJAX单独加载

时间:2011-03-02 16:17:51

标签: asp.net ajax asp.net-mvc-2 partial-views

我正在使用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。

1 个答案:

答案 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找到更多相关信息。