トーナメント コントローラーに次のアクション メソッドがあります。
public ActionResult Edit(int id) {
EditTournamentViewModel viewModel = new EditTournamentViewModel {
Tournament = _tournamentService.GetTournamentByID(id),
TournamentDivisions = _divisionService.GetTournamentDivisions(id).ToList()
};
ViewBag.SportID = new SelectList(_sportService.GetSports(), "SportID", "Name");
ViewBag.CountryID = new SelectList(_countryService.GetCountries(), "CountryID", "Name");
return View(viewModel);
}
2 つのビューバッグ項目は、入力される選択リストです。firebug でページを調べると、 SelectList の名前は ですViewBag.SportID
。SportID
これは私が期待するものです。しかし、そこで選択した値をviewModelのプロパティSportID
のプロパティに入力したいのです。Tournament
したがって、名前はTournament.SportID
.
これを達成する方法がわかりません。Razor で SelectList の名前を次のように変更できませんでした。
<div class="editor-field">
@Html.DropDownList("SportID", "Select a sport", new { name = "Tournament.SportID" } )
@Html.ValidationMessageFor(t => t.Tournament.Sport)
</div>
これは私の見解にあるコードです:
<div class="editor-field">
@Html.DropDownList("SportID", "Select a sport")
@Html.ValidationMessageFor(t => t.Tournament.Sport)
</div>
私が取ることができる解決策は、ビューモデルにプロパティを持つ代わりにTournament
、個々のプロパティをコピーしてからオートマッパーを使用することですが、それを行わなくても修正があるかどうかを知りたいです (もちろん、私が行っていることを除きます)非常に悪い習慣と見なされます)。