我通过Ajax调用我的MVC控制器动作,并希望该动作返回两个部分视图。两个部分视图都应以html格式返回。
这是我通过ajax调用的方式
$.ajax({
url: '/SomeController/GetContent',
type: 'GET',
dataType: "html",
success: function (d, status, xhr) {
$('#partial1') = d.?
$('#partial2') = d.?
},
error: function (req, status, errorObj) {
alert('error');
}
});
我尝试了类似这样的控制器动作:
public PartialViewResult[] GetContent()
{
PartialViewResult[] pvs = new PartialViewResult[2];
pvs[0] = PartialView("Partial1", null);
pvs[1] = PartialView("Partial2", null);
return pvs;
}
如果我只返回一个局部视图(不作为数组返回),它可以工作,但对于两个我只是在ajax成功中返回一个空数组。任何想法如何解决这个问题?
答案 0 :(得分:1)
创建一个返回两个部分的视图
/Views/YourController/GetContent.cshtml
@Html.Partial("Partial1")
@Html.Partial("Partial2")
并将方法更改为
public PartialViewResult GetContent()
{
return PartialView();
}
但是,如果您需要控制在调用此方法的视图中放置每个partial的位置,那么您将需要2个单独的方法和2个单独的ajax调用。
答案 1 :(得分:0)
我不确定你将要实现什么,但是你正在打破部分视图和绑定的基本绑定。 那些具有相同功能的部分视图,但是单独的信息然后放在单个部分视图中,或者如果你有不同的功能和单独的视图,那么绑定2 ajax调用。 替代方式您可以使用MVC6 viewcomponent的最新功能 http://www.asp.net/vnext/overview/aspnet-vnext/vc 或AngularJS状态绑定。