asp.net mvc html helper Dropdownlist问题

时间:2013-06-05 15:54:54

标签: asp.net-mvc html-helper

我使用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中显示

1 个答案:

答案 0 :(得分:3)

首先,这不是一个复选框。这是一个下拉列表。用正确的信息提出问题很重要,否则你会得到错误的答案。

其次,这是不可能的,它与MVC无关,这是由浏览器完成的。当你实际提交某些东西时,没有办法让浏览器提交“null”。 http帖子中没有“null”的概念。

获取null的唯一方法是,根本不发布值。否则,模型绑定器无法知道实际空值与实际想要发布空字符串之间的区别。

您甚至无法创建自定义模型绑定器,因为您通过直接转到表单集合来绕过模型绑定。