首頁 > 後端開發 > C++ > 為什麼我的ASP.NET MVC表單提交拋出' ViewData項目類型不匹配:期望'iEnumerable'但接收到'System.int32''錯誤?

為什麼我的ASP.NET MVC表單提交拋出' ViewData項目類型不匹配:期望'iEnumerable'但接收到'System.int32''錯誤?

Patricia Arquette
發布: 2025-02-03 03:01:09
原創
255 人瀏覽過

Why Does My ASP.NET MVC Form Submission Throw a

asp.net MVC表單提交錯誤:ViewData類型不匹配

>

提交ASP.NET MVC表單時,您可能會遇到“具有鍵'categoryId”的viewData項為'system.int32',但必須是類型的'iEnumerable'。 ”通常,當您的控制器操作期望下拉列表的對象集合,但會收到一個整數時,這通常會發生。 SelectListItem

根本原因:

> 差異源於視圖模型和控制器動作期望之間的不匹配:

您的視圖模型的
    屬性是
  • CategoryIDint您視圖中的下拉列表需要
  • 填充其選項。
  • 控制器的獲取方法正確填充了下拉列表,但是帖子方法無法重新填充它。 IEnumerable<SelectListItem>
  • >在郵政方法中導致null
  • ,導致錯誤。 該框架試圖在預期的
>中使用

>值,從而導致類型不匹配。 CategoryList> intViewData解決方案: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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板