Html.DropDownList Selected Value Not Working (Using Constructor with IEnumerable<SelectListItem>)

Paul Peat picture Paul Peat · Oct 24, 2013 · Viewed 49.9k times · Source

I have an issue where the selected value is not working for the Html.DropDownList helper method. See below:

This is My Controller:

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

    return View(item);
}

This is my View:

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

However when I try the below in by view it works:

@Html.DropDownList("NewsItemId", string.Empty)

The below also works but since the field name does not match the model, it will not post correctly.

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

The reason I need to use the first option is so that I can add the class attribute to the control.

Could someone help me understand what I am doing wrong?

Answer

freshbm picture freshbm · Oct 24, 2013

You have the same problem here:

DropDownListFor Not Selecting Value

Problem is in your ViewBag property name. Because it is same as your property in Model it will not work. You should just change name of your ViewBag prop to something else, like:

ViewBag.NewsItemList = new SelectList(ViewBag.NewsItemId.Items, "Id", "Name", item.NewsItemId);

and on View

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