asp.net-mvc-4 – MVC 4 DropDownListFor错误 – 没有具有密钥的’IEnumerable’类型的ViewData项

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-4 – MVC 4 DropDownListFor错误 – 没有具有密钥的’IEnumerable’类型的ViewData项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个模特:
public class Auction
{
    public string Title { get; set; }
    public string category { get; set; }
}@H_502_3@ 
 

和控制器:

[HttpGet]
public ActionResult UserForm()
{

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

}@H_502_3@ 
 

在视图中我有以下几行:

<div class="editor-field">
    @Html.DropDownListFor(model =>
        model.category,(SelectList)ViewBag.categoryList)
    @Html.ValidationMessageFor(model => model.category)

</div>@H_502_3@ 
 

我尝试保存表单时遇到的错误是:

There is no ViewData item of type ‘IEnumerable’ that
has the key ‘category’. Description: An unhandled exception occurred
during the execution of the current web request. Please review the
stack trace for more information about the error and where it
originated in the code.

Exception Details: System.InvalidOperationException: There is no
ViewData item of type ‘IEnumerable’ that has the key
‘category’.

我不明白是什么问题,因为我做了(或试图做)本指南中完成的所有事情:
https://www.youtube.com/watch?v=7HM6kDBj0vE

该视频也可以在此链接中找到(第6章 – 自动绑定到请求中的数据):
http://www.lynda.com/ASPNET-tutorials/ASPNET-MVC-4-Essential-Training/109762-2.html

解决方法

The error i get when i try to save the form

这就是你的问题所在.我怀疑你没有在post方法中重建你的列表. get方法中的以下代码行也应该在post方法中,特别是如果要返回相同的视图,或者在下拉列表中使用ViewBag.categoryList的视图.

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

当您使用带有dropdownlistfor html帮助器的null对象时,会出现这种错误.如果您执行类似的操作,则可以轻松复制该错误

@Html.DropDownListFor(model => model.PropertyName,null)
// or
@Html.DropDownList("dropdownX",null,"")@H_502_3@

猜你在找的asp.Net相关文章