DropDownListFor:没有具有键的'IEnumerable <selectlistitem>'类型的ViewData项

时间:2016-12-02 12:07:17

标签: asp.net-mvc razor

我刚刚在Stack溢出上创建了我的帐户,所以这是我第一次提出问题:我的DropDownList有问题。我不知道我做错了什么,因为我对ASP-NET和MVC 5比较陌生,所以请原谅我做过的任何可怕的事情

控制器:

public ActionResult typeDevices()
    {
        List<SelectListItem> typelist = new List<SelectListItem>();
        DropDownModel type = new DropDownModel();


        type.TypeDevicesId = 1;
        type.TypeDevicesValue = "typeDevice1";

        typelist.Add(new SelectListItem() { Value = type.TypeDevicesValue, Text = type.TypeDevicesId.ToString() });

        type.TypeDevicesId = 2;
        type.TypeDevicesValue = "typeDevice2";

        typelist.Add(new SelectListItem() { Value = type.TypeDevicesValue, Text = type.TypeDevicesId.ToString() });

        type.TypeDevicesId = 3;
        type.TypeDevicesValue = "typeDevice3";

        typelist.Add(new SelectListItem() { Value = type.TypeDevicesValue, Text = type.TypeDevicesId.ToString() });

        SelectList listvalues = new SelectList(typelist, "Text", "Value");
        ViewBag.DropDownValues = listvalues;
        ViewData["DropDownData"] = new SelectList(listvalues, "Text", "Value");
        return View();
    }

型号:

public class DropDownModel
{
    public int TypeDevicesId { get; set; }
    public string TypeDevicesValue { get; set; }
}

指数:

<p>
    <label class="field" for="Type">Type:</label>
    @Html.DropDownList("DropDownData", (SelectList)ViewBag.DropDownValues))
</p>

此代码来自我关注的视频。 Link to video

我得到的错误是

  

没有类型为'IEnumerable&lt; SelectListItem&gt;'的ViewData项它有关键'DropDownData'

3 个答案:

答案 0 :(得分:0)

只需更改此行代码

即可
ViewBag.DropDownValues = listvalues;

ViewBag.DropDownValues = typelist;

您需要在下拉列表中提供IEnumerable<SelectListItem>类型数据。您的listvalues类型为SelectList,但您的typelist属于所需类型。

答案 1 :(得分:0)

试试这个:

Pipe

答案 2 :(得分:0)

问题解决了,我做了一个公共的actionResult TypeDevices,但我从来没有打电话给它。所以这有点愚蠢。感谢大家的帮助! :)

我修改了问题,方法是将Public ActionResult TypeDevices更改为Public void Type Devices并在ActionResult索引中调用TypeDevices();