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

本文关键字:net asp 选择 mvc 列表 选项 未定义 | 更新日期: 2023-09-27 18:19:50

我使用的是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");

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

选项已经被选中,因为它们反映了模型的状态。这条线路

@Html.ListBoxFor(model => model.AvailableProducts

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

如果您真的只想要一个列表框,其中包含将名称为AvailableProducts的特定参数添加到请求中的选项,则可以使用Html.ListBox:

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