Asp.net mvc asp.net mvc html帮助程序下拉列表问题

Asp.net mvc asp.net mvc html帮助程序下拉列表问题,asp.net-mvc,html-helper,Asp.net Mvc,Html Helper,我使用mvc html帮助器复选框如下: @Html.DropDownList(item.QuestionId.ToString(), new SelectList(((DropDownList)item).Options, "OptionId", "Name"), "Select Please") 当我提交时,在我的[http]控制器中,我可以通过 [HttpPost] public ActionResult TestList(FormCollection formCol

我使用mvc html帮助器复选框如下:

@Html.DropDownList(item.QuestionId.ToString(),
 new SelectList(((DropDownList)item).Options, "OptionId", "Name"), 
"Select Please")
当我提交时,在我的
[http]控制器中
,我可以通过

    [HttpPost]
    public ActionResult TestList(FormCollection formCollection)
    {
        foreach (var res in formCollection.AllKeys) 
        {
            string Selected = null;
            Selected = formCollection[res];
        }
但当我选择“A”时,例如,我得到了A,但当我什么都不选择(它显示我定义的“请选择”)时,我希望它是
null
,但现在它是
,这意味着它有值……我只希望它像这样:如果我什么都没有选择,我就什么都没有提交,在所有键中都没有意义,在字符串
selected
中也没有意义,如果我不选择,我希望allkeys没有任何内容,谢谢

附言: 例如:


它将显示一个问题的选项,如果我选择了a,我可以从我的控制器中得到一个表单,我没有选择B,所以在我的控制器AllKeys中,它不包含B、C或D,所以我想要这样的下拉列表,如果我没有选择任何人,它将不会显示“”或其他类似于我没有选择B、C或D的内容,所有键中都不会显示任何内容,这不是一个复选框。这是一个下拉列表。用正确的信息提问很重要,否则你会得到错误的答案

第二,这是不可能的,它与MVC无关,这是由浏览器完成的。当您实际提交某些内容时,无法使浏览器提交“null”。http post中没有“null”的概念

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


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

@HaoYucheng-RadioButtonList完全不同,因为当未选择任何内容时,实际上未选择任何内容。使用具有默认值的dropdownlist。。它有一个默认值。。该值为“”。所以选择了一些东西,默认值。如果你不想要一个值,那么你唯一的选择就是根本没有默认值。
foreach (var SubItem in ((RadioButtonList)item).Options)
{
  @Html.RadioButton(item.SurveyItemId.ToString(), SubItem.OptionId) @SubItem.Name 
}