2011-05-04 23 views
0

在ASP.Net MVC 3中使用Html.DropDownListFor幫助器時,填充SelectList的正確方法是什麼?在選擇列表中使用Html.DropDownListFor()

我基本上有一個「創建」的形式,我想爲特定的字段指定條目值。例如,它是一個電影數據庫,我希望能夠輸入流派,但我不希望用戶能夠輸入他們喜歡的內容,所以我假設SelectList是最好的答案?

一個可行的方法是創建一個新類的靜態方法返回的SelectList:

public class Genres 
{ 
    public static List<string> GetGenres() 
    { 
     List<string> myGenres = new List<string>(); 
     myGenres.Add("Comedy"); 
     myGenres.Add("Romantic Comedy"); 
     myGenres.Add("Sci-Fi"); 
     myGenres.Add("Horror"); 

     return myGenres; 
    } 
} 

然後可以這樣使用:

<div class="editor-field"> 
     @Html.DropDownListFor(model => model.Genre, new SelectList(OLL.Models.Genres.GetGenres())) 
    </div> 

它只是不似乎是正確/最簡單的方法呢?我想我在這裏丟失了一些明顯的東西...

感謝您提供任何幫助。

+0

這看起來像是一個很好的解決方案。也許你可以將新的SelectList代碼分解到另一個方法中,但是我沒有看到當前代碼存在問題。 – mellamokb 2011-05-04 15:15:20

+0

我想我要創建一個泛型模型類,然後有靜態IEnumerables爲每個領域,我需要做到這一點。例如,'public static IEnumerable Genres = new List {「Action」,「Adventure」,「Animation」};'' – Darren 2011-05-04 15:50:02

回答

0

這是一個簡單的selectList風格,我一直在使用dropdown,希望你能找到這個幫助。

ViewBag.AlbumListDD = from c in db.Query<DatabaseEntities.VenuePhotoAlbum>("WHERE VenueId = @0", VenueId) 
         select new SelectListItem 
         { 
         Text = c.Name, 
         Value = c.Id.ToString() 
         }; 

裏面我的觀點:

@Html.DropDownList("AlbumId", (IEnumerable<SelectListItem>)ViewBag.AlbumListDD, new { id = "ChangeAlbum" }) 

希望你能找到這個有用的,因爲這是一個數據庫的路線走。我通常喜歡在數據庫中擁有所有類型的信息,這樣用戶就可以隨意動態地添加/刪除和更改這些下拉項目。在刪除某個類型時,需要在幕後執行一些SQL工作,但在這一點上已證明對我來說非常成功和快速。

0
var og = (from s in DB.Products 
select new SelectListItem 
    { 
     Text = s.ProductName, 
     Value = s.ProductID.ToString() 
    }); 
    ViewBag.lstProducts = new SelectList(getproductname, "ProductID", "ProductName"); 
<p> 
    @Html.DropDownList("AlbumId", (IEnumerable<SelectListItem>)ViewBag.lstProducts, new { @id = "drp" }); 
</p> 
相關問題