微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个模特:
public class Auction
{
    public string Title { get; set; }
    public string category { get; set; }
}

和控制器:

[HttpGet]
public ActionResult UserForm()
{

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

}

在视图中我有以下几行:

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

</div>

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

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;

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

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

原文地址:https://www.jb51.cc/aspnet/245749.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐