具有鍵“XXX”的ViewData項(xiàng)的類型為“System.Int32”我有以下視圖模型public class ProjectVM{
....
[Display(Name = "Category")]
[Required(ErrorMessage = "Please select a category")]
public int CategoryID { get; set; }
public IEnumerable<SelectListItem> CategoryList { get; set; }
....}和以下控制器方法創(chuàng)建一個(gè)新項(xiàng)目并分配一個(gè) Categorypublic ActionResult Create(){
ProjectVM model = new ProjectVM
{
CategoryList = new SelectList(db.Categories, "ID", "Name")
}
return View(model);}public ActionResult Create(ProjectVM model){
if (!ModelState.IsValid)
{
return View(model);
}
// Save and redirect}并在視圖中@model ProjectVM....@using (Html.BeginForm()){
....
@Html.LabelFor(m => m.CategoryID)
@Html.DropDownListFor(m => m.CategoryID, Model.CategoryList, "-Please select-")
@Html.ValidationMessageFor(m => m.CategoryID)
....
<input type="submit" value="Create" />}視圖顯示正確但在提交表單時(shí),我收到以下錯(cuò)誤消息InvalidOperationException:具有鍵“CategoryID”的ViewData項(xiàng)的類型為“System.Int32”,但必須是“IEnumerable <SelectListItem>”類型。使用該@Html.DropDownList()方法會(huì)發(fā)生相同的錯(cuò)誤,如果我使用ViewBag或傳遞SelectList ViewData。
4 回答

MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
根據(jù)斯蒂芬的回答,這可能很有用:
@Html.DropDownListFor(m => m.CategoryID, Model.CategoryList ?? new List<SelectListItem>(), "-Please select-")
或在ProjectVM中:
public class ProjectVM{ public ProjectVM() { CategoryList = new List<SelectListItem>(); } ...}

墨色風(fēng)雨
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
最可能導(dǎo)致某種錯(cuò)誤重定向到您的頁面,而您又沒有再次初始化模型的下拉列表。
確保在模型的構(gòu)造函數(shù)中或每次將所述模型發(fā)送到頁面之前初始化下拉列表。
否則,您需要通過視圖包或隱藏值助手維護(hù)下拉列表的狀態(tài)。

慕田峪7331174
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
我有同樣的問題,當(dāng)我試圖發(fā)布表單時(shí),我得到了一個(gè)無效的ModelState。對(duì)我來說,這是因?yàn)閷ategoryId設(shè)置為int,當(dāng)我將其更改為字符串時(shí),ModelState有效且Create方法按預(yù)期工作。
- 4 回答
- 0 關(guān)注
- 1353 瀏覽
添加回答
舉報(bào)
0/150
提交
取消