2013-01-17 27 views
2

我期望在.NET MVC中實現它,但試圖找出如何實際執行它。目前在我的ViewModel,我有(例如):從ViewModel在視圖上創建自動生成的DropDownList

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中自動生成一個DropDownList?

+0

這可能會有所幫助: http://stackoverflow.com/questions/6663615/creating-a-dropdownlist-from-your-controller-or-view-model – Srinivas

+0

不幸的是,這仍然意味着我必須在View中手動創建DropDownListFor。有沒有辦法解決? –

回答

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) 

如果你想要一些生成的代碼,你需要通過提供數據上下文類來使用腳手架選項。這裏是不錯的教程MVC Music Store

+0

感謝您的回答,但我想要完成的是@ Html.DropDownListFor在我的視圖(自動生成 - 在Visual Studio中添加視圖)中爲我創建。這可能嗎? –

+1

在視圖中,不要忘記將模型指定爲GroupPolicyViewModel。 – user959729

2

你可以(從VS2010)創建一個新的控制器和使用實體框架。在嚮導中指定包含實體框架和讀/寫操作,嚮導將創建控制器和視圖。

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>