Asp.net-Mvc-4

MVC 4 DropDownListFor 錯誤 - 沒有具有鍵的“IEnumerable<SelectListItem>”類型的 ViewData 項

  • May 3, 2015

我有一個模型:

public class Auction
{
   public string Title { get; set; }
   public string category { get; set; }
}

和一個控制器:

[HttpGet]
public ActionResult UserForm()
{

   var categoryList = new SelectList(new[] { "auto", "elec", "games", "Home" });
   ViewBag.categoryList = categoryList;
   return View();

}

在視圖中,我有以下幾行:

&lt;div class="editor-field"&gt;
   @Html.DropDownListFor(model =&gt;
       model.category,(SelectList)ViewBag.categoryList)
   @Html.ValidationMessageFor(model =&gt; model.category)

&lt;/div&gt;

我嘗試保存表單時遇到的錯誤是:

沒有具有鍵“類別”的“IEnumerable”類型的 ViewData 項。說明:執行目前 Web 請求期間發生未處理的異常。請查看堆棧跟踪以獲取有關錯誤及其源自程式碼的位置的更多資訊。

異常詳細資訊:System.InvalidOperationException:沒有具有鍵“類別”的“IEnumerable”類型的 ViewData 項。

我不明白問題出在哪裡,因為我做了(或試圖做)本指南中所做的一切: https ://www.youtube.com/watch?v=7HM6kDBj0vE

該影片也可以在此連結中找到(第 6 章 - 自動綁定到請求中的數據): http://www.lynda.com/ASPNET-tutorials/ASPNET-MVC-4-Essential-Training/109762-2。 html

當我嘗試保存表單時出現的錯誤

這就是你的問題所在。我懷疑你沒有在你的 post 方法中重建你的列表。您在 get 方法中擁有的以下程式碼行也應該在您的 post 方法中,尤其是當您返回相同的視圖或ViewBag.categoryList在下拉列表中使用的視圖時。

var categoryList = new SelectList(new[] { "auto", "elec", "games", "Home" });
ViewBag.categoryList = categoryList;

null當您使用帶有 html 幫助器的下拉列表的對象時,您會遇到這種錯誤。如果您執行類似的操作,則可以輕鬆重現該錯誤

@Html.DropDownListFor(model =&gt; model.PropertyName,null)
// or
@Html.DropDownList("dropdownX", null, "")

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