asp.net MVC表單提交錯誤:ViewData類型不匹配
>提交ASP.NET MVC表單時,您可能會遇到“具有鍵'categoryId”的viewData項為'system.int32',但必須是類型的'iEnumerable'。 ”通常,當您的控制器操作期望下拉列表的對象集合,但會收到一個整數時,這通常會發生。
SelectListItem
> 差異源於視圖模型和控制器動作期望之間的不匹配:
您的視圖模型的
CategoryID
。
int
您視圖中的下拉列表需要IEnumerable<SelectListItem>
>值,從而導致類型不匹配。 CategoryList
>
int
ViewData
解決方案:IEnumerable
該解決方案涉及在控制器的後行動中重新流傳屬性。這樣可以確保下拉列表數據即使在表單提交後也可用。 >
CategoryList
理解機制:
public ActionResult Create(ProjectVM model) { if (!ModelState.IsValid) { // Repopulate the CategoryList model.CategoryList = new SelectList(db.Categories, "ID", "Name"); return View(model); } // ... save the model and redirect ... }
助手方法使用屬性名稱從字典中檢索選擇列表。 如果列表為null,它將檢查具有相同名稱的A條目。 查找
,其中預計會觸發錯誤。>
DropDownListFor
此錯誤強調了在您的視圖模型,視圖和控制器操作之間為無縫表單提交的一致數據鍵入的重要性。 仔細注意數據類型管理會阻止這些常見的MVC陷阱。 ViewData
以上是為什麼我的ASP.NET MVC表單提交拋出' ViewData項目類型不匹配:期望'iEnumerable'但接收到'System.int32''錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!