0

我有 multiselect 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"/>
    }
4

1 回答 1

1

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

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

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

于 2013-04-23T10:56:09.763 回答