性別選択フィールド (--Select--、男性、女性) があり、コントローラーに入力しています。ページが読み込まれるときに、モデルで選択されている性別がpm.Gender
、ページが読み込まれるときに自動的に選択されるようにします。
からの値は次のpm.Gender
ように返されます。
- " "
- 「M」
- 「フ」
意見:
<%: Model.Gender %>
<%: Html.DropDownListFor(m => m.Gender, (IEnumerable<SelectListItem>)ViewData["gender"], new { @class = "span2" })%>
コントローラ:
gender = new[] { "Select", "Male", "Female" };
List<SelectListItem> genderselectList = new List<SelectListItem>();
foreach (string item in gender)
{
SelectListItem sli = new SelectListItem { Text = item, Value = item };
if (item.Trim().StartsWith(pm.Gender))
sli.Selected = true;
genderselectList.Add(sli);
}
ViewData["gender"] = genderselectList;
アプリケーションをデバッグした後、選択されるはずの適切な値のgenderselectList
適切なデータが含まれていることがわかります。Selected = true
しかし、ページが読み込まれると、Html.DropDownListFor
.
編集:どのブラウザでも機能しません。
この問題の原因を知っている人はいますか? どんな助けでも大歓迎です。
乾杯。
編集:(Kafのソリューションを実装した後)
これが、Kafのソリューションを実装した後に私がやっていることです。
意見:
<%: Html.DropDownListFor(m => m.Gender, (SelectList)(ViewData["gender"]), new { @class = "span2" }) %>
コントローラ:
gender = new[] { "Select", "Male", "Female" };
List<SelectList> genderselectList = new List<SelectList>();
foreach (string item in gender)
{
SelectList sli;
if (item.Trim().StartsWith(pm.Gender))
sli = new SelectList(GetGender(), item, item, item);
else
sli = new SelectList(GetGender(), item, item);
//without selectedValue
genderselectList.Add(sli);
}
ViewData["gender"] = genderselectList;
これを行うと、次の例外が発生します。
Unable to cast object of type 'System.Collections.Generic.List`1[System.Web.Mvc.SelectList]' to type 'System.Web.Mvc.SelectList'.
私が間違っていることを知っている人はいますか?