asp.net MVC表单提交错误:ViewData类型不匹配
>提交ASP.NET MVC表单时,您可能会遇到“具有键'categoryId”的viewData项为'system.int32',但必须是类型的'iEnumerable'。”通常,当您的控制器操作期望下拉列表的对象集合,但会收到一个整数时,这通常会发生。
SelectListItem
> 差异源于视图模型和控制器动作期望之间的不匹配:
您的视图模型的
CategoryID
。
int
您视图中的下拉列表需要IEnumerable<SelectListItem>
>值,从而导致类型不匹配。CategoryList
>
int
ViewData
解决方案:IEnumerable
该解决方案涉及在控制器的后行动中重新流传属性。这样可以确保下拉列表数据即使在表单提交后也可用。>
CategoryList
理解机制:
<code class="language-csharp">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 ... }</code>
助手方法使用属性名称从字典中检索选择列表。 如果列表为null,它将检查具有相同名称的A条目。 查找
,其中预计会触发错误。>
DropDownListFor
此错误强调了在您的视图模型,视图和控制器操作之间为无缝表单提交的一致数据键入的重要性。 仔细注意数据类型管理会阻止这些常见的MVC陷阱。ViewData
以上是为什么我的ASP.NET MVC表单提交抛出' ViewData项目类型不匹配:期望'iEnumerable'但接收到'System.int32''错误?的详细内容。更多信息请关注PHP中文网其他相关文章!