从ViewModel在View上创建自动生成的DropDownList

时间:2013-01-17 16:11:42

标签: c# .net asp.net-mvc

我期望在.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?

2 个答案:

答案 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。在向导中指定包含实体框架和读/写操作,向导将创建控制器和视图。

enter image description here

它会在控制器中生成这样的代码[还有更多]:

   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>