2014-06-17 98 views
0

这是THIS的后续行动。DropDownListFor via via ViewBag

我控制器

using (ISession session = NHIbernateSession.OpenSession()) 
{ 
    var index = session.Query<Transport>().ToList(); 
    List<SelectListItem> items = new List<SelectListItem>(); 
    foreach (var car in index) 
    { 
     items.Add(new SelectListItem() 
      { Text = car.Modelis.model_name, Value = car.Modelis.Id.ToString() }); 
    } 
    ViewBag.Modeliai = new SelectList(items, "Id", "model_name"); 
    return View(items); 
} 

观是这样的:

@Html.DropDownListFor(model => model.Modelis.model_name, ViewBag.Modeliai) 

而且东西是错误的查看代码。如何将ViewBag值放到下拉列表中?

+0

结果是什么?异常或错误的输出?或者是后回的问题? PS:你将SelectListItem生成“加倍” - 你可以使用'for'循环并将'items'赋值给'ViewBag.Modeliai'或者简单的'ViewBag.Modeliai = new SelectList(index,“Id”,“ model_name“);'(我喜欢第一个更好,因为它是强类型的)。 – ChrFin

+0

我得到这个:CS1973:'System.Web.Mvc.HtmlHelper '没有可用的方法名为'DropDownListFor',但似乎有一个名称的扩展方法。扩展方法不能动态分派。考虑转换动态参数或调用扩展方法而不使用扩展方法语法。 – user1883184

回答

1

我仍然不知道你真正想要的选择,但下面应该工作:

using (ISession session = NHIbernateSession.OpenSession()) 
{ 
    var index = session.Query<Transport>().ToList(); 
    List<SelectListItem> items = new List<SelectListItem>(); 
    foreach (var car in index) 
    { 
     items.Add(new SelectListItem() 
      { Text = car.Modelis.model_name, Value = car.Modelis.Id.ToString() }); 
    } 
    ViewBag.Modeliai = items; 
    return View(index); 
} 

foreach (var transport in Model) 
{ 
    @Html.DropDownListFor(model => transport.Modelis.model_name, ViewBag.Modeliai) 
} 
+0

我得到这个:CS1579:foreach语句无法对'web_nt.Models.Transport'类型的变量进行操作,因为'web_nt.Models.Transport'没有包含'GetEnumerator'的公共定义 – user1883184

+0

你是否返回了'List 'in 'View(...)'? – ChrFin

+0

我该怎么做? – user1883184