2012-10-04 82 views
10

所以我有一個集合類型,像這樣一個觀點:MVC .NET從模型系列的強類型的視圖中創建下拉列表

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IList<DTO.OrganizationDTO>>" %> 

的OrganizationDTO看起來是這樣的:

public OrganizationDTO 
{ 
    int orgID { get; set; } 
    string orgName { get; set; } 
} 

我只是想使用HTML幫助器從OrganizationDTO的集合中創建一個下拉列表,但對於我來說,我無法想象它!我是否以這種錯誤的方式去做?

我應該使用foreach循環來創建選擇框嗎?

+0

那麼,我正在嘗試使用<%= Html.DropDownListFor()%>,但我不確定這是否正確。 –

+0

這絕對是正確的做法。我再問一次,具體試過了什麼?如果您沒有向我們展示您使用的代碼,我們無法幫助您。 –

回答

13

我做了一個小例子,像你這樣的模型:

public class OrganizationDTO 
{ 
    public int orgID { get; set; } 
    public string orgName { get; set; } 
} 

,並像一個控制器:

public class Default1Controller : Controller 
{ 
    // 
    // GET: /Default1/ 

    public ActionResult Index() 
    { 
     IList<OrganizationDTO> list = new List<OrganizationDTO>(); 
     for (int i = 0; i < 10; i++) 
     { 
      list.Add(new OrganizationDTO { orgID = i, orgName = "Org " + i }); 
     } 

     return View(list); 
    } 

} 

,並在視圖中:

<%= Html.DropDownListFor(m => m.First().orgID, new SelectList(Model.AsEnumerable(), "orgId","orgName")) %> 
+1

啊。這看起來像我所需要的。第一部分是拋棄我,因爲m是一個集合,我正在迷路,因爲m => m.orgID不存在。 –

+1

所以按照[這裏](http://stackoverflow.com/questions/8182280/difference-between-dropdownlist-or-dropdownlistfor-html-helper)DropDownListFor似乎是更好的選擇,因爲它的強類型,所以我得給這個答案的功勞。謝謝! –

+1

@ColinPear使用'm.First()。orgID'時要小心,如果列表爲空,它會拋出錯誤。 – webdeveloper

5

試試這個:

<%= Html.DropDownList("SomeName", new SelectList(Model, "orgID", "orgName"), "Please select Organization") %> 
+0

這也適用! –

+0

謝謝,非常簡單的方法。 –

相關問題