我目前正在尝试在另一个视图中显示我的一个视图(局部视图)。在我的观点中,我一直在使用以下代码:@{ Html.RenderPartial("_Pending"); }
。
我的部分视图位于我的共享文件夹中。我的目标是使用来自两个不同控制器的逻辑来提取两个不同的视图。鉴于我的两个观点(交易索引和待定交易(部分)),我基本上希望这两个观点出现在同一页面上。问题是,目前,我基本上得到了两次相同的观点。
简而言之,如何在另一个视图中显示局部视图,部分视图从不同的控制器返回结果?
答案 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 );
}
}
希望它对你有所帮助。