How to return two partial views from controller as html?
我通过Ajax调用我的MVC控制器操作,并希望该操作返回两个局部视图。两个部分视图都应作为HTML返回。
这就是我通过Ajax调用的方法
1 2 3 4 5 6 7 8 9 10 11 12 | $.ajax({ url: '/SomeController/GetContent', type: 'GET', dataType:"html", success: function (d, status, xhr) { $('#partial1') = d.? $('#partial2') = d.? }, error: function (req, status, errorObj) { alert('error'); } }); |
我为控制器操作尝试了类似的操作:
1 2 3 4 5 6 7 8 9 | public PartialViewResult[] GetContent() { PartialViewResult[] pvs = new PartialViewResult[2]; pvs[0] = PartialView("Partial1", null); pvs[1] = PartialView("Partial2", null); return pvs; } |
如果我只返回一个部分视图(不是作为数组返回),那么它是有效的,但是对于两个视图,我只会在Ajax成功中得到一个空数组。有什么解决办法吗?
创建返回两个部分的单个视图
/视图/yourcontroller/getcontent.cshtml
1 2 | @Html.Partial("Partial1") @Html.Partial("Partial2") |
把方法改为
1 2 3 4 | public PartialViewResult GetContent() { return PartialView(); } |
但是,如果您需要控制每个部分在从中调用此方法的视图中的位置,那么您将需要2个单独的方法和2个单独的Ajax调用。
我不确定您将要实现什么,但您正在打破局部视图和绑定的基本绑定。这两个部分视图是否都具有相同的功能,但又有不同的信息,然后放入单个部分视图中,或者如果您具有不同的功能,则使用单独的视图绑定2个Ajax调用。另一种方法是使用MVC6 ViewComponent的最新功能http://www.asp.net/vnext/overview/asp net-vnext/vc或AngularJS状态绑定。