我有一个包含2个列表框的ASP.NET MVC应用程序:#AvailableItems& #AssignedItems。我可以将物品从一个盒子转移到另一个盒子。
我还在Save链接上存储了一些其他相关值,这些值也需要提交,比如ID和东西。当我发布数据时,我可以使用以下jQuery轻松地提交属性(然后在Action方法中使用ModelBind):
$.post($(this).attr("href"), $.getAttributes($(this)), function(result)
{
//do some fancy stuff
}
, "json");
当我点击“保存”时,我希望能够将两个列表框的内容提交到关联控制器上的Action方法。理想情况下,Action方法将采用以下形式:
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult UpdateFactsheetUniverse(WebFactsheetUniverse wfu
, List<string> availableItems
, List<string> assignedItems)
{
// do some fancy stuff
return Json("saved");
}
Cany有人建议我如何收集两个列表的内容并将其与其余数据一起提交,以便我的Action方法可以将它们作为参数?
如果没有,有人可以提出另一种解决方案吗?
由于
戴夫
答案 0 :(得分:1)
我认为最终,为了使模型绑定器起作用,您需要最终得到如下形式的表单参数:
&availableItems[0]=blah&availableItems[1]=foo&assignedItems[0]=bar&...
这将允许模型绑定器将表单参数解析为数组(不确定它是否会执行List,但您可以尝试它,如果它不起作用则更改为使用string [])。
假设你正在使用多重选择,它可能看起来像:
var params = ''
$('#AvailableItems option').each( function(i) {
params += '&availableItems[' + i + ']=' + $(this).val();
});
$('#AssignedItems option').each( function(i) {
params += '&assignedItems[' + i + ']=' + $(this).val();
});