我看到一个奇怪的(对我来说)问题,我试图发布一个基于复选框的整数数组。当值未按顺序发布时,模型绑定器似乎无法以我期望的方式运行。
我可以用一个非常简单的动作重现这个
public ActionResult Debug(string[] Unassigned)
{
return RedirectToAction("Index", new { id = 7 });
}
当发布以下值(通过即时窗口复制)时,这种情况不起作用的一个例子。我希望 Unassigned 的值是 8 和 6。
? Request.Form.AllKeys
{string[4]}
[0]: "__RequestVerificationToken"
[1]: "LoginId"
[2]: "Unassigned[1]"
[3]: "Unassigned[3]"
? Request.Form["Unassigned[1]"]
"8"
? Request.Form["Unassigned[3]"]
"6"
? Unassigned
null
当值按顺序传递时,这是有效的(注意Unassigned[3]
没有被绑定,因为Unassigned[2]
没有发布。
? Request.Form.AllKeys
{string[5]}
[0]: "__RequestVerificationToken"
[1]: "LoginId"
[2]: "Unassigned[0]"
[3]: "Unassigned[1]"
[4]: "Unassigned[3]"
? Request.Form["Unassigned[0]"]
"2"
? Request.Form["Unassigned[1]"]
"8"
? Request.Form["Unassigned[3]"]
"6"
? Unassigned
{string[2]}
[0]: "2"
[1]: "8"
减去格式,我的 HTML 看起来像这样
<input type="checkbox" name="Unassigned[0]" value="2">
<input type="checkbox" name="Unassigned[1]" value="8">
<input type="checkbox" name="Unassigned[2]" value="7">
<input type="checkbox" name="Unassigned[3]" value="6">
<input type="checkbox" name="Unassigned[4]" value="5">
<input type="checkbox" name="Unassigned[5]" value="9">
<input type="checkbox" name="Unassigned[6]" value="4">
<input type="checkbox" name="Unassigned[7]" value="3">
<input type="checkbox" name="Unassigned[8]" value="1">
鉴于select 没有损坏,做错了什么?