views:

307

answers:

2

I have an aspx page which allows me to edit articles. Among things I can edit is which category the article belongs to. The category is chosen through a DropDownList as shown here,

<%= Html.DropDownList("categoryID", (IEnumerable<SelectListItem>)ViewData["CategoryID"], new { @class = "textbox" }) %>

However, the articles category isn't selected when I go to that page. The ViewData I use for the DropDownList looks like this,

ViewData["CategoryID"] = new SelectList(categories, "CategoryID", "Title", article.CategoryID);

Which should select the article.CategoryID as it's selected value. Have I done this wrong?

+1  A: 

You're assigning the ViewData property a SelectList, but casting it to IEnumerable<SelectListItem> - try typing directly to SelectList instead:

<%= Html.DropDownList("categoryId", (SelectList)ViewData["CategoryID"], new { @class = "textbox" }) %>
Tomas Lycken
No, this made no difference. When going to editArticle.aspx the dropdownlist is still not displaying the correct category for the article.
Jova
A: 

The best I could suggest is that you ensure your "Category" class has a property called "CategoryID" and is not just "ID". From what you've given us that's the best guess I can make as to the problem.

If it is just "ID", then your function will need to go:

ViewData["CategoryID"] = new SelectList(categories, "ID", "Title", article.CategoryID);
Sofox