2011-11-16 22 views
5

私はC#.Net MVC3 Webアプリケーションを持っています。私はドロップダウンリストを全面的に使い、成功しています。しかし、私は問題を抱えている2つがあります。唯一の違いは、ルックアップテーブルを使用するのではなく、コードでSelectListsをオンザフライで作成していることです。私は他のすべてのドロップダウンのルックアップテーブルを使用します。コード内のSelectListsをクイックウォッチすると、正しい項目のSelectedプロパティ値がtrueに設定されます。ただし、ページが読み込まれると、Selectedプロパティの項目は表示されません。最初の項目はです。何か案は?これはそれらの厄介なものの一つです。私は以下の両方の方法を試みました。どちらの場合も、ViewBag.DateToYearとSelectListの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を試しましたか? A)ViewBagまたはB)強く型付けされたビューモデルのいずれかのSelectListオプションを持たないのはなぜですか?私はあなたがこれにどのように近づいているのか分からない。 –

答えて

5

これが事実であるが、私は数日前に、選択し得ていないdropdownboxesといくつかの問題を抱えていたかどうかわかりません。

私の問題は:@model.Optionsがあり、@html.dropdownlist("Options", @model.Options, [...])を作成しました。しかし、彼らは同じ名前を持っていたので、何とか矛盾していました。私が@html.dropdownlist("anythingElse", @model.Options, [...])を使用したとき、正常に動作しました。

私がreturn View(model)をクイックウォッチしたとき、選択したオプションも正しく設定されているようでしたので、それを理解するまでに時間がかかりました。多分あなたは同じ問題を抱えていますか?

+0

@Ron ...あなたはロック!それはそれだった。男、それは古典的なバグです – MikeTWebb

+0

あなたは大歓迎です。お役に立てて嬉しいです。 P –

+0

ありがとう、私のために働いてくれて... –

6

問題は、SelectListが設計通りに機能することです。バグはデザインに含まれています。 SelctedItemのSelectedプロパティを設定することもできますが、GetEnumerator()を使ってリストをトラバースする場合(またはMvcがそれを行う場合)、これは完全に無視されます。 Mvcは代わりに新しいSelectfListItemsを作成します。

SelectListItem []、Text-Name、Value-NameおよびSelectedValueと共にSelectList ctorを使用する必要があります。 SelectListItem自体ではなく、選択したいSelectListItemのVALUEをSelectedValueとして渡すことに注意してください。例:

コントローラではなく、なぜですか?

擬似コード:

//コントローラ

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を与えていないことを確認してください。それが私がこの問題を解決した方法です...

関連する問題