具有键'SelectedItem'的ViewData项的类型为'System.String',但必须是'IEnumerable <selectlistitem>类型

时间:2018-04-10 14:43:44

标签: c# asp.net-mvc

我有一个在页面加载时正确填充的下拉列表,但是当我选择一个选项并将其与其他字段中的数据一起提交时,我收到此错误。我需要将其重置为默认值吗?在下面的代码中,“Industries”是一个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
    }
}

1 个答案:

答案 0 :(得分:-1)

1。 将行业定义为IEnumerable<SelectListItem>

如果您将行业定义为List<SelectListItem> 将工业转变为IEnumerable,如

(IEnumerable<SelectListItem>)Model.Industries

2.在您的模型中,代替public string SelectedItem { get; set; }使用

public string Industry{ get; set; }

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