Asp.net

在 ASP.NET MVC 2 中實現 DropDownList 的最佳方式?

  • September 10, 2013

我試圖了解使用幫助程序DropDownList在 ASP.NET MVC 2中實現 a 的最佳方法。DropDownListFor這是一個多部分的問題。

首先,將列表數據傳遞給視圖的最佳方式是什麼?

  1. SelectList使用包含數據的屬性傳遞模型中的列表
  2. 通過傳遞列表ViewData

如何在 中獲得空白值DropDownList?我應該SelectList在創建它時將它建構到,還是有其他方法告訴助手自動創建一個空值?

最後,如果由於某種原因出現伺服器端錯誤並且我需要使用 重新顯示螢幕DropDownList,我是否需要再次獲取列表值以傳遞到視圖模型?這些數據不會在文章之間維護(至少當我通過我的視圖模型傳遞它時不會)所以我打算再次獲取它(它被記憶體)。我這樣做對嗎?

你最好的選擇是在你的控制器中創建一個 SelectList - 在這裡使用我的擴展方法:http: //blog.wekeroad.com/2010/01/20/my-favorite-helpers-for-aspnet-mvc

使用與您的屬性名稱相同的鍵將其彈出到 ViewData 中: ViewData["statusid"]=MySelectList

然後只需使用Html.DropDownFor(x=>x.StatusID)就可以了。

部分回答:

  1. 恕我直言,最好的方法是ViewModel像這樣傳遞列表:
public SelectList Colors
{
   get
   {
       // Getting a list of Colors from the database for example...
       List<Color> colors = GetColors().ToList();

       // Returning a SelectList to be used on the View side
       return new SelectList(colors, "Value", "Name");
   }
}
  1. 要獲得空白或預設選項,例如( – Pick a color – ),您可以在視圖側執行此操作:
@Html.DropDownListFor(m => m.Color, Model.Colors, "-- Pick a color --")
  1. 如果列表是ViewModel.

看看下面的部落格文章。它可以給你一些提示:

下拉列表和 ASP.NET MVC

引用自:https://stackoverflow.com/questions/2398296