【问题标题】:MVC3 Drop Down list not selectng selected itemMVC3下拉列表未选择所选项目
【发布时间】:2012-08-13 03:49:54
【问题描述】:

我有一个 C#.Net MVC3 网络应用程序。我在所有地方都使用下拉列表并取得了成功。但是,有两个我遇到了麻烦。唯一的区别是我在代码中动态创建SelectLists,而不是使用查找表。我对所有其他下拉菜单使用查找表。当我快速查看代码中的SelectLists 时,正确的项目将Selected 属性值设置为true。但是,当页面加载时,不显示具有Selected 属性的项目。第一项是。有任何想法吗?这是那些奇怪的之一。我已经尝试了以下两种方式。在这两种情况下,ViewBag.DateToYear 和 SelectList DateToYear 都有正确的值和 'Selected' 属性集

1)

//控制器

        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) //控制器 同上

//查看

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)

【问题讨论】:

  • 您尝试过 DropDownListFor 吗?为什么不将 SelectList 选项作为 A) ViewBag 或 B) 强类型视图模型的一部分?我没有看到你如何处理这个问题。

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


【解决方案1】:

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

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

为什么不直接在控制器中做呢?

伪代码:

//控制器

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");

应该选择第二个选项。

【讨论】:

    【解决方案2】:

    不确定是不是这种情况,但几天前我遇到了一些下拉框没有被选中的问题。

    我的问题是:我有一个@model.Options,我创建了一个@html.dropdownlist("Options", @model.Options, [...])。然而,因为他们有相同的名字,所以有些冲突。当我使用@html.dropdownlist("anythingElse", @model.Options, [...]) 时,它运行良好。

    当我快速观看return View(model) 时,所选选项似乎也设置正确,所以花了一段时间才弄清楚。也许你有同样的问题?

    【讨论】:

    • @Ron...你摇滚!就是这样。伙计,这是一个经典的错误
    • 不客气。很高兴我能帮上忙。我也花了很长时间才弄清楚:P
    【解决方案3】:

    我也发生了同样的事情,请确保您提供的 ID 与您在模型上提供的属性名称不同。这就是我解决这个问题的方法......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      相关资源
      最近更新 更多