【问题标题】:Multiple Renderactions in View MVC3View MVC3 中的多个渲染
【发布时间】:2011-05-16 14:05:09
【问题描述】:

我在 MVC3 视图中有多个渲染操作。

我想获得部分视图,然后获得部分视图的结果。

(就像页面上的一些占位符,然后页面被渲染操作结果归档为部分视图不佳)。

我现在有几个 Html.RenderAction("Action", "controller");在主视图上使用不同的操作返回一些要呈现的局部视图。如何让它们异步作为回报,而不是等待渲染直到最后一个弹出?

我需要一些 ajax 还是使用 AsyncController 完成?

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    我总是喜欢使用 jQuery ajax。您可以简单地将 PartialView 作为 ajax 操作结果返回,然后在 jQuery(在浏览器端)用刚刚返回的 PartialView 替换页面特定部分的内容。

    快速简单,无需重新加载页面!

    【讨论】:

    • 我得到的只是“System.Web.Mvc.Html.MvcForm”,而不是我的控制器返回的 PartialView 作为 ActionResult。
    • Jep,这也是我的想法。我尝试了@Ajax.ActionLink,它在替换作为操作结果返回的局部视图以及替换或附加
      标记方面效果很好。但这仅适用于链接。我认为,应该有一种机制来使用 ajax 进行渲染操作? ajax.beginform 是要走的路吗?
    • 我不明白。你想在从 jQuery 调用 ajax 后重定向?如果是,那么您可以毫无问题地做到这一点。请谷歌“ajax重定向结果”。
    • 我认为我不需要重定向。我有多个渲染操作的视图。剃刀般的视野。这些渲染操作从控制器返回一个局部视图,链接到模型。干净整洁。现在,如果这些模型在返回数据方面很慢,我希望看到没有数据的页面,然后 ajax 将一个
      一个又一个地替换为通过控制器从模型中传入的部分视图。
    • 每个 jQuery ajax 调用默认都是异步的(你也可以在 ajax 调用定义中使用 "async": true )。因此,请等待结果形成您可以显示的操作,例如一些进度条或类似的东西
    【解决方案2】:

    看看这个:

    $.ajax({
                type: "POST",
                data: { "supporterId": supporterId },
                url: '@Url.Action("ShowDetails")',
                success: function (result) {
                    $("#popupDetails").html(result); - here you are replaceing content of you page with partial view returned by the action                   
                },
                error: function (error) {
                    alert("error");
                }
            });
    

    下面是动作:

            public ActionResult ShowDetails(int supporterId)
        {
            Supporter supporter = ... //get supporter object from the database
            return PartialView("Details", supporter);
        }
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签