使用Viewbag绑定DropdownlistFor

时间:2013-12-13 10:08:51

标签: asp.net-mvc asp.net-mvc-4

我正在尝试将DropDownListFor帮助器与控制器中定义的viewbag绑定。但我收到了错误。

查看代码: -

@Html.DropDownListFor(model => model.CurrencyID, ViewBag.CurrencyList as SelectListItem)) 

控制器代码: -

  

 public ActionResult Create()
>  {
>    var content = from p in db.Currency
>                  where p.IsActive == true
>                  orderby p.CurrencyName
>                  select new { p.CurrencyID, p.CurrencyCode };
> 
>    var x = content.ToList().Select(c => new SelectListItem         
>                            {
>                               Text = c.CurrencyCode,
>                               Value = c.CurrencyID.ToString(),
>                               Selected = (c.CurrencyID == 68)
>                            }).ToList();
>             ViewBag.CurrencyList = x;
> 
>             return View();            
>         }

收到错误: - System.Web.Mvc.HtmlHelper'不包含'DropDownListFor'的定义和最佳扩展方法重载'System.Web.Mvc.Html.SelectExtensions.DropDownListFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions。表达式>,System.Collections.Generic.IEnumerable)'有一些无效的参数

2 个答案:

答案 0 :(得分:24)

您需要更改

@Html.DropDownListFor(model => model.CurrencyID, ViewBag.CurrencyList as SelectListItem))

@Html.DropDownListFor(model => model.CurrencyID, ViewBag.CurrencyList as IEnumerable<SelectListItem>)

答案 1 :(得分:5)

您也可以这样做。它应该工作:

ViewBag.CurrencyID = x;

并在视野中:

@Html.DropDownListFor(model => model.CurrencyID, null)

希望这有帮助!