1

我像这样使用 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,但现在它是"",这意味着它具有价值......我只是希望它像:如果我什么都不选择,我什么都不提交,我在 AllKeys 中什么都没有,在 StringSelected中也没有,如果我不选择,我希望 allkeys 什么都没有,谢谢

ps:例如:

foreach (var SubItem in ((RadioButtonList)item).Options)
{
  @Html.RadioButton(item.SurveyItemId.ToString(), SubItem.OptionId) @SubItem.Name 
}

它将显示一个问题的选项,如果我选择 A,我可以从我的控制器中获取 A,我没有选择 B,所以在我的控制器 AllKeys 中,它不包含 B 或 C 或 D,所以我想要这样的下拉列表,如果我没有选择任何人,它不会显示“”或其他内容,就像我没有选择 B、C 或 D 一样,AllKeys 中不会显示任何内容

4

1 回答 1

3

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

其次,这是不可能的,和MVC无关,这是浏览器做的。当您实际提交某些内容时,无法让浏览器提交“null”。http 帖子中没有“null”的概念。

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

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

于 2013-06-05T18:40:26.413 回答