c# - 在一个中返回多个视图

时间:2017-05-02 03:25:35

标签: c# asp.net-mvc

我目前正在尝试在另一个视图中显示我的一个视图(局部视图)。在我的观点中,我一直在使用以下代码:@{ Html.RenderPartial("_Pending"); }

我的部分视图位于我的共享文件夹中。我的目标是使用来自两个不同控制器的逻辑来提取两个不同的视图。鉴于我的两个观点(交易索引和待定交易(部分)),我基本上希望这两个观点出现在同一页面上。问题是,目前,我基本上得到了两次相同的观点。

简而言之,如何在另一个视图中显示局部视图,部分视图从不同的控制器返回结果?

2 个答案:

答案 0 :(得分:3)

如果我理解正确,你想要的是获得相同局部视图的结果,但是由两个不同的控制器执行。

您是否尝试过@Html.Action

essentialy它与调用Partial的概念相同,但涉及到控制器操作。

要使用它,只需创建两个Action,然后在视图中调用@ Html.Action,例如:

在您的控制器中:

public ActionResult Action1() {
    return PartialView("__Pending");
}

public ActionResult Action2() {
    return PartialView("__Pending");
}
在您的视图中

- 您也可以在局部视图中调用它

@Html.Action("Action1")
@Html.Action("Action2")

更多信息abount部分和行动差异检查

MVC Html.Partial or Html.Action

有关hwo的更多信息,请使用Html.Action
How can I use Html.Action?

答案 1 :(得分:0)

部分始终包含在主视图中。如果您通过AJAX进行更新,那么您唯一会自行返回部分内容。大概你会使用partial来显示客户列表。或许,您可以在视图中使用foreach循环迭代列表(包含在视图模型中),将每个列表作为模型传递给partial。 查找在一个视图中使用许多部分视图的示例。 在aspx页面中: -

<asp:content id="content" contentplaceholderid="CenterContentPlaceHolder" runat="server">
<form id="frmCheckout" name="frmCheckout" method="post">
<div class="rzccartcont">                     

                  <%this.Html.RenderPartial("CheckoutProduct", Model);%>

                     <div class="rzcchkpmnt rzcchkpmnt-bg" id="divChkbottomArea">
                         <% this.Html.RenderPartial("CheckoutCartProfileInformation", Model); %>

                         <%this.Html.RenderPartial("CheckoutCartPaymentDetails", Model); %>

                     </div>
</div>
</form>
</asp:content>

通过AJAX重新加载页面的一部分(注意部分在初始页面加载时呈现内联)

<script type="text/javascript">
   $(function() {
       $('#someButton').click( function() {
           $.ajax({
              url: '/controller/action',
              data: ...some data for action...,
              dataType: 'html',
              success: function(data) {
                 $('#partial').html(data);
              },
              ...
           });
       });
   });
</script>

AJAX控制器: -

public ActionResult Action(...)
{
     var model = ...

     ...

     if (Request.IsAjaxRequest())
     {
          return PartialView( "Partial", model.PartialModel );
     }
     else
     {
          return View( model );
     }
}

希望它对你有所帮助。