我使用mvc html helper复选框,如下所示:
@Html.DropDownList(item.QuestionId.ToString(),
new SelectList(((DropDownList)item).Options, "OptionId", "Name"),
"Select Please")
当我提交时,在我的[http] controller
中,我可以通过
[HttpPost]
public ActionResult TestList(FormCollection formCollection)
{
foreach (var res in formCollection.AllKeys)
{
string Selected = null;
Selected = formCollection[res];
}
但是当我选择“A”时,我得到A,但是当我没有选择任何内容时(它按照我的定义显示“请选择”),我希望它为null
,但现在它是{{ 1}},这意味着它有价值...我只想要它:如果我什么都没选,我什么也不提交,我在AllKeys中没有任何意义,在String ""
中也没有,我希望所有的密钥都没有不要选择,谢谢
PS: 例如:
Selected
它会显示一个问题的选项,如果我选择A,我可以得到A形式我的控制器,我没有选择B,所以在我的控制器AllKeys中,它不包含B或C或D,所以我想下拉列表就像这个,如果我没有选择任何人,它不会显示“”或其他东西,就像我没有选择B或C或D,没有任何东西会在AllKeys中显示
答案 0 :(得分:3)
首先,这不是一个复选框。这是一个下拉列表。用正确的信息提出问题很重要,否则你会得到错误的答案。
其次,这是不可能的,它与MVC无关,这是由浏览器完成的。当你实际提交某些东西时,没有办法让浏览器提交“null”。 http帖子中没有“null”的概念。
获取null的唯一方法是,根本不发布值。否则,模型绑定器无法知道实际空值与实际想要发布空字符串之间的区别。
您甚至无法创建自定义模型绑定器,因为您通过直接转到表单集合来绕过模型绑定。