我期望在.NET MVC中实现,但试图弄清楚如何实际执行它。目前在我的ViewModel上,我有(例如):
public class GroupPolicyViewModel
{
public int PolicyId { get; set; }
public int HistoryId{ get; set; }
public SelectList ProductList { get; set; } // tried this
public List<Product> ProductList1 { get; set; } // tried this
}
每当我尝试从此ViewModel自动生成View时,ProductList都会被忽略。有没有办法从ViewModel自动生成DropDownList?
答案 0 :(得分:5)
使用模型
public class GroupPolicyViewModel
{
public int PolicyId { get; set; }
public int HistoryId{ get; set; }
public int SelectedProductId{ get; set; }
public List<Product> ProductList { get; set; }
}
您可以创建DropDownList
@Html.DropDownListFor(m => m.SelectedProductId,
new SelectList(Model.ProductList, "ProductId", "ProductName"))
或者如果您的模型中有产品的SelectList
@Html.DropDownListFor(m => m.SelectedProductId, Model.ProductSelectList)
如果您需要一些生成的代码,则需要使用scaffolding选项来提供数据上下文类。这是很好的教程MVC Music Store
答案 1 :(得分:2)
您可以(从VS2010)创建新的Controller并使用Entity Framework。在向导中指定包含实体框架和读/写操作,向导将创建控制器和视图。
它会在控制器中生成这样的代码[还有更多]:
public ActionResult Create()
{
ViewBag.CostCentre_ID = new SelectList(db.CostCentres, "ID", "Name");
ViewBag.Location_ID = new SelectList(db.Locations, "ID", "Name");
ViewBag.User_ID = new SelectList(db.UCMUsers, "User_ID", "EmployeeNo");
return View();
}
并在视图中显示:
<div class="editor-field">
@Html.DropDownList("User_ID", String.Empty)
@Html.ValidationMessageFor(model => model.User_ID)
</div>