我有多选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"/>
}
答案 0 :(得分:1)
MVC将尝试将URL上的输入数据绑定到模型中。我还没有看到Chosen.js如何将数据发布回服务器,但实际上它的格式错误,因此MVC将它看到的第一个元素绑定到字符串模型。
FormsCollection检索URL中发布的所有数据,这就是为什么可以在那里看到所有选定值的原因。
您是否尝试将传入模型从字符串更改为字符串[],并查看是否所有项都绑定到数组?