我的锦标赛控制器中有以下操作方法:
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);
}
这两个 viewbag 项目是将被填充的选择列表。当我使用 firebug 检查页面时, SelectList 的名称为ViewBag.SportID
is SportID
,这是我所期望的。但我希望将在那里选择的值输入到我的 viewModelSportID
的属性中。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
在我的视图模型中拥有一个属性,而是可以复制各个属性,然后使用自动映射器,但我想知道是否有修复而不必这样做(当然,除非我在做什么被认为是非常糟糕的做法)。