即使未定义选定值,也会选择asp.net mvc列表框选项

时间:2013-06-24 12:13:29

标签: c# asp.net-mvc listbox

我正在使用asp.net mvc。我的视图中有一个列表框。始终在页面加载时选择此列表框中的选项。我没有为此列表框定义任何选定的值。谁能告诉我为什么会这样?

这是代码

          @{
               Dictionary<string, string> Options = new Dictionary<string, string>();
               ddlOptions.Add("1", "1");
               ddlOptions.Add("2", "2");
               ddlOptions.Add("3", "3n");
               ddlOptions.Add("4", "4");
           }
           <td>@Html.ListBoxFor(model => model.AvailableProducts, 
           new MultiSelectList(Options , "Key", "Value"), 
           new { size = "6" })

model.AvailableProducts是一个字符串列表:

        List<string> product = new List<string>();
        product.Add("1");
        product.Add("2");
        product.Add("3");
        product.Add("4");

1 个答案:

答案 0 :(得分:1)

已选择选项,因为它们反映了模型的状态。这一行

@Html.ListBoxFor(model => model.AvailableProducts

告诉ASP.NET MVC将属性model.AvailableProducts绑定到列表框。由于此属性包含列表中显示的所有四个选项,因此默认情况下都会选中它们。您可以注释掉填充此列表的代码,并验证是否未选择任何选项。

如果您真的只想要一个带有选项的列表框,这些选项会为请求添加名称为AvailableProducts的特定参数,您可以使用Html.ListBox

@Html.ListBox("AvailableProducts", 
       new MultiSelectList(Options , "Key", "Value"), 
       new { size = "6" })