【发布时间】:2015-03-07 06:30:14
【问题描述】:
我想在控制器的另一个局部视图中返回多个局部视图的动态数量,并使用 Ajax 调用将其注入 DOM。 用户将要选择一个包(单选按钮),根据这个包,我需要返回 X 个表单以供用户填写。
这是我的 Ajax 代码:
$(function() {
var serviceURL = "/NewOrderRequestForms/GetFormsToCreateNewOrderRequest";
$(":radio").change(function() {
$.ajax({
url: serviceURL,
type: "POST",
data: { account: $("#AccountId").val(), serviceAvailabilityPackageId: $(":radio:checked").val() },
success: function(xhrData) {
populateNORForms(xhrData);
},
error: function() {
alert("error");
}
});
});
});
我的控制器方法如下所示:
public virtual ActionResult GetFormsToCreateNewOrderRequest(Guid account, int serviceAvailabilityPackageId)
{
var customerNumber = _authorizationUtil.GetAccount(account).CustomerNumber;
var result = _customFormService.GetFormsToCreateNewOrderRequest(customerNumber.Value,
serviceAvailabilityPackageId).Select(x => x.FormKey);
var forms = CustomFormUtil.GetCustomMetaPartial(result);
//I am confused here
//return PartialView(something)
}
CustomFormUtil.GetCustomMetaPartial(result) 将返回一个包含 1 到 6 个字符串的 IEnumerable<string>,例如“form1、form3”或“form1、form2、form3、form6”等。我使用它来返回视图名称字典和将它们添加到我的最终局部视图中的模型。
//Dictionary for Custom Meta Partialviews
public static Dictionary<string, CustomMetaPartialViewModel> CustomMetaPartial2 = new Dictionary<string, CustomMetaPartialViewModel>()
{
{"form1_v1", new CustomMetaPartialViewModel(MVC.Service.NewOrderRequestForms.Views.form1_v1, new form1_v1())},
{"form2_v1", new CustomMetaPartialViewModel(MVC.Service.NewOrderRequestForms.Views._form2_v1,new form2_v1())},
...
{"form7_v1", new CustomMetaPartialViewModel(MVC.Service.NewOrderRequestForms.Views._form7_v1,new form7_v1())}
};
我的问题是:如何将这些带有模型的部分视图添加到另一个大的部分视图中并将这个发送回视图?
【问题讨论】:
-
我不明白为什么这应该是个问题。你能发布你的部分观点和主要观点吗?
-
顺便说一句,您似乎把一个非常简单的要求过于复杂了。
-
因为我想用多个不同的视图模型返回这个父视图。而且我找不到将这些视图添加到主视图中并将其返回的正确方法。
-
您能否分享您对更好方法的想法,我想不出另一种解决方案来解决我的问题,我想有一个单独的 Ajax 调用来单独渲染每个局部视图,但是我认为性能方面不是最好的解决方案。
-
您可以为主要部分视图中的每个部分视图创建子操作,并根据需要使用 ajax 调用加载/重新加载它们。但是,我需要看到您的部分观点,以便给您更详细的答案。
标签: c# ajax asp.net-mvc multiple-views