Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use a ViewBag to create a dropdownlist?

Controller:

public ActionResult Filter() {     ViewBag.Accounts = BusinessLayer.AccountManager.Instance.getUserAccounts(HttpContext.User.Identity.Name);     return View(); } 

View:

<td>Account: </td> <td>@Html.DropDownListFor("accountid", new SelectList(ViewBag.Accounts, "AccountID", "AccountName"))</td> 

ViewBag.Accounts contains Account objects which have AccountID, AccountName and other properties. I would like a DropDownList called accountid (so that on Form Post I can pass the selected AccountID) and the DropDownList to display the AccountName while having the AccountID as value.

What am I doing wrong in the view code?

like image 970
rikket Avatar asked May 16 '13 18:05

rikket


People also ask

How do you bind a static value to a DropDownList in MVC?

Binding MVC DropDownList with Static Values Just add an Html helper for DropDownList and provide a static list of SelectListItem. The values added as SelectListItem will be added and displayed in the DropDownList. In this way, you do not need to add anything to Controller Action.


1 Answers

You cannot used the Helper @Html.DropdownListFor, because the first parameter was not correct, change your helper to:

@Html.DropDownList("accountid", new SelectList(ViewBag.Accounts, "AccountID", "AccountName")) 

@Html.DropDownListFor receive in the first parameters a lambda expression in all overloads and is used to create strongly typed dropdowns.

Here's the documentation

If your View it's strongly typed to some Model you may change your code using a helper to created a strongly typed dropdownlist, something like

@Html.DropDownListFor(x => x.accountId, new SelectList(ViewBag.Accounts, "AccountID", "AccountName")) 
like image 146
Jorge Avatar answered Sep 26 '22 03:09

Jorge