2011-11-16 178 views
5

我有一個C#.Net MVC3網絡應用程序。我正在使用下拉列表遍佈整個地方並取得成功。但是,我遇到了兩個問題。唯一的區別是我在代碼中創建SelectLists而不是使用查找表。我使用查找表來查看所有其他Drop Downs。當我在代碼中快速查看SelectLists時,正確的項目將Selected屬性值設置爲true。但是,頁面加載時,不顯示具有Selected屬性的項目。第一項是。有任何想法嗎?這是其中的一個。我嘗試了以下兩種方法。在這兩種情況下,ViewBag.DateToYear和選擇列表的DateToYear有正確的價值觀和 '選擇' 屬性設置MVC3下拉列表中未選擇所選項目

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) 
+2

你能發表一些代碼嗎? –

+0

@Thhomas ....有幫助嗎? – MikeTWebb

+0

您是否試過DropDownListFor?爲什麼不把SelectList選項作爲A)ViewBag或B)強類型視圖模型的一部分?我沒有看到你如何解決這個問題。 –

回答

5

不知道如果是這樣的話,但我有一些問題沒有得到選擇的前幾天dropdownboxes。

我的問題是:我有一個@model.Options,我創建了一個@html.dropdownlist("Options", @model.Options, [...])。但是,因爲它們有相同的名稱,所以它有點矛盾。當我使用@html.dropdownlist("anythingElse", @model.Options, [...])時,它工作正常。

當我QuickWatched return View(model)選定的選項似乎也設置正確,所以它花了一段時間來弄清楚。也許你有同樣的問題?

+0

@Ron ...你搖滾!就是這樣。男人,這是一個經典的錯誤 – MikeTWebb

+0

不客氣。很高興我能幫上忙。花了我很長時間才弄明白:P –

+0

感謝它也適用於我... –

6

問題是,SelectList按設計工作。該錯誤在設計中。您可以將Selected Property設置爲SelctedItem,但如果您使用GetEnumerator()遍歷列表(或者如果Mvc爲您執行此操作),則將完全忽略它。 Mvc將創建新的SelectfListItems。

您必須將SelectList ctor與SelectListItem [],文本名稱,值名稱和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"); 

第二種選擇應選擇。

+0

我試過你的方法,它的工作...謝謝 – MikeTWebb

0

同樣的事情也發生在我身上,請確保您不給出與您在模型上給出的屬性名稱相同的ID。這就是我如何解決這個問題...