私はHtml.DropDownListForとMVC3で2日間頭を叩いています。
ドロップダウンリストを作成し、それに基づいてデータベースを正常に更新することに成功しました。
エリアのドロップダウンリストを作成します
1 - NewYork
2 - London
3 - Paris
etc
この問題は、ユーザーが前の選択を変更できる編集ページを作成するときに発生します。ドロップダウンに前に選択した値を表示しようとしています。
私のコードは次のとおりです。
コントローラ:
//
// GET: /MyHome/UpdateProfile
public ActionResult UpdateProfile()
{
var userProfile = websiteRepository.GetProfileForLoggedUser();
UpdateProfileViewModel viewModel = new UpdateProfileViewModel
{
AreaLookUps = websiteRepository.GetAreaLookUpSelectList(userProfile.Area),
UserProfile = userProfile
};
return View("UpdateProfile", viewModel);
}
GetAreaLookUpSelectListメソッド
public IEnumerable<SelectListItem> GetAreaLookUpSelectList(int selectedId)
{
var areaLookUps = from p in db.AreaLookUp
orderby p.AreaLookUpDescription
select new SelectListItem
{
Text = p.AreaLookUpDescription,
Value = SqlFunctions.StringConvert((double)p.AreaLookUpId),
Selected = p.AreaLookUpId == selectedId
};
return areaLookUps;
}
意見
@model NPLHWebsite.ViewModels.UpdateProfileViewModel
<div class="editor-label">
@Html.LabelFor(model => model.UserProfile.Area)
@Html.DropDownListFor(model => model.UserProfile.Area, Model.AreaLookUps, "--Select Area--")
</div>
ViewModel
public class UpdateProfileViewModel
{
public UserProfile UserProfile { get; set; }
public IEnumerable<SelectListItem> AreaLookUps { get; set; }
}
選択した値を表示するのを手伝ってください。プロファイルの作成中にそのオプションが選択された場合は、ドロップダウンリストで「ロンドン」と言います。データベースには、ロンドンを表す2の値が格納されています。