【问题标题】:DropDownList error: here is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key ''DropDownList 错误:这里没有“IEnumerable<SelectListItem>”类型的 ViewData 项,它具有键“”
【发布时间】:2014-09-04 15:42:39
【问题描述】:

我在 .net Fiddle 中有此功能,但在本地运行时出现错误:https://dotnetfiddle.net/1Ptssq

在 .net 4.5.1 mvc 中本地运行时,什么会导致完全相同的代码无法运行?

我已经看到建议使用 DropDownListFor() 的类似问题的答案,但我需要 DropDownList 的功能,它允许您添加扩展名 (http://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions.dropdownlist.aspx),如下所示: Handling onchange event in HTML.DropDownList Razor MVC

【问题讨论】:

  • Viewbag 和 Viewdata 可能不可靠。我建议更改您的代码以通过您的视图模型传递您的列表,看看这是否有助于解决您的问题。在这里查看我的答案stackoverflow.com/questions/25434762/…
  • @MattBodily,你说的不可靠是什么意思?请你解释一个场景。我没有经历过或读过你所说的任何内容
  • stackoverflow.com/questions/12045381/… 如果您在接受的答案中查看 cmets,他们会在那里谈论 viewbag
  • 谢谢马特。不幸的是,我在.net Fiddle (dotnetfiddle.net/5xSAZD) 上修改了我的示例,并按照您的建议修改了我的实际代码。它在 .net Fiddle 中仍然有效,在我的代码中仍然无效。同样的错误。
  • OOOOk....我的错误。我有一个没有填充 ViewModel 属性的代码路径。发生错误后我检查了@Model并且属性在那里......它只是空的。有点误导性的错误,但仍然是我的错误。

标签: asp.net-mvc-4


【解决方案1】:

检查您指定的对象/属性是否为空。就我而言:

namespace MvcTest.Models
{
    public class SampleViewModel
    {
        public IEnumerable<SelectListItem> SelectItems { get; set; }
    }
}

还有……

@model MvcTest.Models.SampleViewModel
@{
    ViewBag.Title = "Home Page";
}
@using (Html.BeginForm())
{
    <div class="form-group">
        @Html.DropDownList("SelectItems")
    </div>
}

SampleViewModel.SelectedItems 为空...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2020-06-28
    相关资源
    最近更新 更多