如何提交2个选择框的内容

时间:2009-09-30 11:50:26

标签: jquery asp.net-mvc ajax

我有一个包含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方法可以将它们作为参数?

如果没有,有人可以提出另一种解决方案吗?

由于

戴夫

1 个答案:

答案 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();
});