【发布时间】:2014-12-17 10:07:08
【问题描述】:
看看这个链接http://odetocode.com/blogs/scott/archive/2013/03/11/dropdownlistfor-with-asp-net-mvc.aspx,代码显示如下:
public class ViewModel
{
private readonly List<IceCreamFlavor> _flavors;
[Display(Name = "Favorite Flavor")]
public int SelectedFlavorId { get; set; }
public IEnumerable<SelectListItem> FlavorItems
{
get { return new SelectList(_flavors, "Id", "Name");}
}
}
链接页面上代码块下方的行提到从某处的数据库中填充 _flavors。我的问题是,这会在哪里?将数据直接拉入 ViewModel 而不是 Controller 是正常的做法吗?如果是这样,我是否只需创建一个构造函数并将我的 DAL 放入其中以填充 _flavors?由于它是只读的,我还有什么其他选择?
【问题讨论】:
-
如果它是只读的,那么您只能在构造函数中设置值,并且在从服务或直接从上下文中获取实际数据后,您显然会在控制器中实例化您的视图模型
-
由于发布后返回视图需要重新分配
SelectList,所以应该是public IEnumerable<SelectListItem> FlavorItems { get; set; }并在控制器中分配 -
我刚才问了一个类似的问题,可以在这里找到*.com/questions/6387120/…
标签: c# asp.net-mvc html.dropdownlistfor selectlist