C# 具有键“SelectedItem”的ViewData项的类型为“System.String”,但必须为“IEnumerable

C# 具有键“SelectedItem”的ViewData项的类型为“System.String”,但必须为“IEnumerable,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个下拉列表,该列表在页面加载时正确填充,但当我选择一个选项并将其与其他字段的数据一起提交回来时,我收到了这个错误。是否需要将其重置为默认值?在下面的代码中,是类型SelectListItem的列表 @using (Html.BeginForm()) { @Html.DropDownListFor(n => n.SelectedItem, Model.Industries) <br> //MORE CONTROLS <br&g

我有一个下拉列表,该列表在页面加载时正确填充,但当我选择一个选项并将其与其他字段的数据一起提交回来时,我收到了这个错误。是否需要将其重置为默认值?在下面的代码中,是类型SelectListItem的列表

@using (Html.BeginForm())
{
    @Html.DropDownListFor(n => n.SelectedItem, Model.Industries)
     <br>
      //MORE CONTROLS 
     <br>
     <input type="submit" value="Calculate" />
 }

[HttpGet]
public ActionResult Calculate()
{
    ClassName DataStuff = new ClassName ();
    return View(new ClassName { Industries = DataStuff.IndustryList() 
});
}

[HttpPost]
public ActionResult Calculate(ClassName  Items)
{
 ClassName CompleteItems = RetrieveData(Items);  
      // above additional calculations 
        return View(CompleteItems);
}
带有相关字段的模型为:

public class ClassName
{

    public string SelectedItem { get; set; }
    public IEnumerable<SelectListItem> Industries { get; set; }
    public List<SelectListItem> IndustryList()
    {
       //populating the DDL
    }
}
一,。 将行业定义为IEnumerable或IEnumerable

如果您将行业定义为列表 把工业铸造成无数的样子

IEnumerableModel.工业

2.在您的模型中,代替公共字符串SelectedItem{get;set;}use

公共字符串行业{get;set;}和


在视图中,使用新属性更新use@Html.DropDownListForn=>n.Industry,Model.Industries

什么是行业类型。它应该是IEnumerableIt类型,它是List类型。这对这种情况不正确吗?就像IEnumerable刚才所做的那样定义它。相同错误。请共享产生相同错误的模型:SelectListItem是否为System.Web.Mvc.SelectListItem类型?使用刚才选中的名称空间检查全名。是的,它是。试试这个公共字符串行业{get;set;}而不是列表?它必须保存DDL内容,不是吗?