asp.net-mvc-3 - MVC3下拉列表未选择所选项目

标签 asp.net-mvc-3 drop-down-menu selection

我有一个 C#.Net MVC3 Web 应用程序。我到处都在使用下拉列表并取得了成功。但是,有两个我遇到了麻烦。唯一的区别是我正在创建 SelectLists在代码中即时而不是使用查找表。我对所有其他下拉列表使用查找表。当我快速观看 SelectLists在代码中,正确的项目有 Selected属性值设置为 true .但是,当页面加载时,带有 Selected 的项目属性不显示。第一项是。有任何想法吗?这是其中之一。下面两种方法我都试过了。在这两种情况下, ViewBag.DateToYear 和 SelectList DateToYear 都具有正确的值和“Selected”属性集

1)

// Controller

        IList<string> dateToYear = new List<string>();
        for (int i = 0; i < numberYears; i++)
        {
            dateToYear.Add(DateTime.Now.AddYears(i).Year.ToString());
        }
        ViewBag.DateToYear = new SelectList(dateToYear,"2014")

//看法
        @Html.DropDownList("DateFromYear", (SelectList)ViewBag.DateToYear )

2)
// Controller
同上

//看法
List<SelectListItem> DateToYear = new List<SelectListItem>();
foreach (var m in ViewBag.DateToYear)
{
    DateToYear.Add(new SelectListItem { Selected = @m.Selected, Value = @m.Text, Text = @m.Text });
} 

@Html.DropDownList("DateFromYear", DateToYear)

最佳答案

问题是, SelectList 按设计工作。错误在于设计。您可以在 SelctedItem 中设置 Selected 属性,但是如果您使用 GetEnumerator() 遍历列表(或者如果 Mvc 为您执行此操作),这将完全被忽略。 Mvc 将创建新的 SelectfListItems。

您必须将 SelectList ctor 与 SelectListItem[]、Text-Name、Value-Name 和 SelectedValue 一起使用。请注意将要被选择的 SelectListItem 的 VALUE 作为 SelectedValue 传递,而不是 SelectListItem 本身!例子:

为什么不直接在 Controller 中做呢?

伪代码:

// Controller

ViewBag.DateToYear = new SelectList(new[]  
{ 
 new SelectListItem { Text = "10", Value = "10" }, 
 new SelectListItem { Text = "15", Value = "15" } 
 new SelectListItem { Text = "25", Value = "25" }, 
 new SelectListItem { Text = "50", Value = "50" }, 
 new SelectListItem { Text = "100", Value = "100" }, 
 new SelectListItem { Text = "1000", Value = "1000" }, 
}, "SomeText", "Value", "15");

应该选择第二个选项。

关于asp.net-mvc-3 - MVC3下拉列表未选择所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158986/

相关文章:

javascript - 选择上一个下拉菜单时出现新的下拉菜单

algorithm - 在压缩重复项的序列中找到第 k 个最小的元素?

javascript - 条件编译在混合 razor 和 javascript 时关闭警告

html - 是否可以在下拉菜单中向右浮动两个带有超赞字体图标的链接

asp.net-mvc - 如何在ASP MVC中自定义Html.ValidationMessageFor

javascript - Jquery 下拉悬停菜单仅适用于第一个 <li>

javascript - contenteditable div 退格和删除文本节点问题

jquery - 选择表内的 TD

asp.net-mvc - LINQ:为什么我在此 LINQ 查询中收到错误?

asp.net-mvc-3 - 适用于 ASP.NET MVC3 的 Azure 和 Rotativa PDF 打印