Html.DropDownList选择的值不起作用(使用带有IEnumberable <SelectListItem>的构造函数)

Pau*_*eat 17 c# asp.net-mvc selectedvalue razor asp.net-mvc-4

我有一个问题,其中所选值不适用于Html.DropDownList帮助器方法.见下文:

这是我的控制器:

public ActionResult Edit(int id = 0)
{
    NewsEvent item = GetItem(id);
    ViewBag.NewsItemId = new SelectList(ViewBag.NewsItemId.Items, "Id", "Name", item.NewsItemId);

    return View(item);
}
Run Code Online (Sandbox Code Playgroud)

这是我的观点:

@Html.DropDownList("NewsItemId",ViewBag.NewsItemId as SelectList, string.Empty,
                           new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)

但是,当我在视图中尝试以下时,它可以工作:

@Html.DropDownList("NewsItemId", string.Empty)
Run Code Online (Sandbox Code Playgroud)

以下也可以,但由于字段名称与模型不匹配,因此无法正确发布.

@Html.DropDownList("NewsItemIdDrop",ViewBag.NewsItemId as SelectList, string.Empty,
                           new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)

我需要使用第一个选项的原因是我可以将class属性添加到控件中.

有人能帮助我理解我做错了什么吗?

fre*_*hbm 46

你有同样的问题:

DropDownListFor不选择值

问题出在您的ViewBag属性名称中.因为它与模型中的属性相同,所以不起作用.您应该只将ViewBag道具的名称更改为其他名称,例如:

ViewBag.NewsItemList = new SelectList(ViewBag.NewsItemId.Items, "Id", "Name", item.NewsItemId);
Run Code Online (Sandbox Code Playgroud)

并在视图上

@Html.DropDownList("NewsItemId",ViewBag.NewsItemList as SelectList, string.Empty,
                           new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)