误解mvc默认绑定

时间:2013-04-23 10:48:50

标签: asp.net-mvc model-binding jquery-chosen

我有多选jquery plagin(Choosen),当我在'Multiple Select'模式下使用它时,我希望在控制器的下一个值:

    posted string = 'value1,value2...'

真的有

    posted string = 'value2'

只有当我直接向FormCollection提供时,我才会得到如下预期值:

    [HttpPost]
    public ActionResult TagSearech(/*string tagSelect*/FormCollection c)
    {
      // only one value here
      // string[] names = tagSelect.Split(',');

      // as expected: value1,....
       string expectedValue = c['tagSelect'];

        return View();
    }

我无法理解可能导致此行为的原因。

修改

以下是视图:

    @using (Html.BeginForm("TagSearech", "Tag"))
    {
       @Html.DropDownList("tagSelect", Model, new { @class = "chzn-select",  data_placeholder = "tag names", multiple = "" })
       <input  type="submit"/>
    }

1 个答案:

答案 0 :(得分:1)

MVC将尝试将URL上的输入数据绑定到模型中。我还没有看到Chosen.js如何将数据发布回服务器,但实际上它的格式错误,因此MVC将它看到的第一个元素绑定到字符串模型。

FormsCollection检索URL中发布的所有数据,这就是为什么可以在那里看到所有选定值的原因。

您是否尝试将传入模型从字符串更改为字符串[],并查看是否所有项都绑定到数组?