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?
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.
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"))