MVC3下拉列表未选择所选项目

Mik*_*ebb 5 selection asp.net-mvc-3 drop-down-menu

我有一个C#.Net MVC3网络应用程序.我正在使用Drop Down列表并取得成功.但是,有两个我遇到麻烦.唯一的区别是我SelectLists在代码中动态创建而不是使用Lookup表.我为所有其他Drop Downs使用查找表.当我SelectLists在代码中快速观察时,正确的Item将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")
Run Code Online (Sandbox Code Playgroud)

//视图

        @Html.DropDownList("DateFromYear", (SelectList)ViewBag.DateToYear )
Run Code Online (Sandbox Code Playgroud)

2)//控制器SAME如上所述

//视图

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)
Run Code Online (Sandbox Code Playgroud)

Tom*_*uλa 6

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

您必须将SelectList ctor与SelectListItem [],Text-Name,Value-Name和SelectedValue一起使用.请注意将SelectValue传递给您想要选择的SelectListItem的VALUE,而不是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");
Run Code Online (Sandbox Code Playgroud)

应选择第二个选项.


Ron*_*ijm 5

不确定是否是这种情况,但我有一些问题,几天前没有选择下拉框.

我的问题是:我有一个@model.Options,我创建了一个@html.dropdownlist("Options", @model.Options, [...]).但是,因为它们具有相同的名称,所以它有些冲突.当我用@html.dropdownlist("anythingElse", @model.Options, [...])它时工作得很好.

当我快速观看时return View(model),所选的选项似乎也设置正确,所以需要一段时间才能弄明白.也许你有同样的问题?