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?
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.
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"))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With