Asp.net mvc 错误理解mvc默认绑定
我有multiselect jquery stripn(),当我在“Multiple Select”模式下使用它时,我希望控制器的下一个值:Asp.net mvc 错误理解mvc默认绑定,asp.net-mvc,model-binding,jquery-chosen,Asp.net Mvc,Model Binding,Jquery Chosen,我有multiselect jquery stripn(),当我在“Multiple Select”模式下使用它时,我希望控制器的下一个值: posted string = 'value1,value2...' 真的有 posted string = 'value2' 仅当我直接引用FormCollection时,我将获得如下所示的预期值: [HttpPost] public ActionResult TagSearech(/*string tagSelect
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"/>
}
@使用(Html.BeginForm(“TagSearech”、“Tag”))
{
@DropDownList(“tagSelect”,Model,new{@class=“chzn select”,data_placeholder=“tag names”,multiple=”“})
}
MVC将尝试将URL上的输入数据绑定到模型中。我还没有看到select.js是如何将数据发回服务器的,但本质上它的格式是错误的,因此MVC将它看到的第一个元素绑定到字符串模型
FormsCollection检索URL中发布的所有数据,这就是为什么所有选定值都可以在URL中看到的原因
是否尝试将传入模型从字符串更改为字符串[],并查看是否所有项都绑定到数组?,使用数组的想法很好。可能这不是错误的格式-作者让剽窃以这种方式工作。似乎有几个字段具有相同的名称和不同的值。在这种情况下,MVC正确地将第一个值绑定到字段中,但不知道如何处理其余的字段。字符串数组将起作用,因为绑定器可以继续为具有相同名称的变量赋值。