请查看此链接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抛入其中以填充_flavours吗?既然只读它,我还有其他选择吗?
答案 0 :(得分:0)
不确定为什么你想让_flavors
只读,特别是当ViewModel类没有构造函数时 - 看起来像是一个错误/错字。不幸的是odetocode.com似乎失败了,所以我只能建议以下解决方案:
制作一个非常简单的ViewModel类
public class ViewModel
{
public List<IceCreamFlavor> Flavors { get; set; }
[Display(Name = "Favorite Flavor")]
public int SelectedFlavorId { get; set; }
public IEnumerable<SelectListItem> FlavorItems
{
get { return new SelectList(Flavors, "Id", "Name");}
}
}
在控制器操作方法中实例化ViewModel
public ActionResult CreateFlavour() {
var model = new ViewModel {
Flavors = GetFlavorsFromDB(); // This is a fake method, supposed to get your data
}
return View(model);
}
在您的查看电话DropDownListFor
@Html.DropDownListFor(m => m.SelectedFlavorId, Model.FlavorItems, 'Please select a flavor')
有关详细信息,请查看我在ASP.NET MVC中如何使用DropDownListFor
的文章:'Using simple Drop Down Lists in ASP.NET MVC'