有一种简单的方法来消除,使用魔法字符串创建时的SelectList,就像这个例子:使用的SelectList不用魔法串
@Html.DropDownListFor(model => model.FooValue, new SelectList(Model.FooCollection, "FooId", "FooText", Model.FooValue))
神奇的字符串是"FooId"
和"FooText"
休息的例子定义如下:
//Foo Class
public class Foo {
public int FooId { get; set; }
public string FooText { get; set; }
}
// Repository
public class MsSqlFooRepository : IFooRepository {
public IEnumerable<Foo> GetFooCollection() {
// Some database query
}
}
//View model
public class FooListViewModel {
public string FooValue { get; set; }
public IEnumerable<Foo> FooCollection { get; set; }
}
//Controller
public class FooListController : Controller {
private readonly IFooRepository _fooRepository;
public FooListController() {
_fooRepository = new FooRepository();
}
public ActionResult FooList() {
FooListViewModel fooListViewModel = new FooListViewModel();
FooListViewModel.FooCollection = _fooRepository.GetFooCollection;
return View(FooListViewModel);
}
}
这只是创建相同的问题,只有'魔术字符串'现在已经移动到视图模型,而不是视图。 – 2011-04-02 17:57:15
'魔法字符串'问题是这样的:如果“FooId”变成“FooFooId”,那么在编译时它不会被视为错误直到运行时。 – 2011-04-02 17:59:02
另外,如果您的视图模型具有类型SelectList的值,那么第二次转换就没有意义。 – 2011-04-02 18:37:55