1
我在比赛控制器以下操作方法:EF4.3链接viewbag项目视图模型
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项目选择列表将被填满。当我用萤火虫检查页面时,ViewBag.SportID
的SelectList的名称是SportID
,这正是我所期望的。但我希望在那里选择的值在我的viewModel中的Tournament
属性的SportID
属性中输入。所以名字应该是Tournament.SportID
。
我不明白我怎么能做到这一点,我是不是能够在剃刀改变选择列表的名称是这样的:
<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>
我可以采取的解决方案,而不是在我的viewmodel有Tournament
属性,我可以复制各个属性,然后使用automapper,但我想听听是否有修复程序,而不必这样做(除非当然,我正在做的事情被认为是非常糟糕的p ractice)。
如果我尝试它告诉我'CS1973:“System.Web.Mvc.HtmlHelper”中有一个名为没有适用的方法“DropDownListFor”,但似乎有这个名字的扩展方法。扩展方法不能动态分派。考虑转换动态参数或调用扩展方法,而不使用扩展方法语法。' –
Mekswoll
2012-04-28 22:04:30
对,忘记了,你应该静态地重新声明你的ViewBag值。看看更正 – 2012-04-28 22:08:57
JUP,就像一个魅力,thx。 :-) – Mekswoll 2012-04-28 22:13:01