0

在控制器中,我使用类型(TypeID,名称)填充 ViewBag

ViewBag.Types = types.ToList();

然后在视图中

@foreach (var item in ViewBag.Types)
    {
       @item.Name
}

此错误:“对象”不包含“名称”的定义

4

2 回答 2

1

ViewBag , ViewData 或此类动态 Magic 项目是邪恶的,因为它们永远不会告诉您您的视图是否由于拼写错误而失败,而使用强类型模型时,当出现问题时您会收到编译时错误。此外,您还可以获得 Intellisense 支持。

为什么不使用强类型方法?

public ActionResult Create()
{
  return View(types.ToList());
}

并使您的视图强类型化到对象/对象

@model IList<Types>
@foreach(var item in Model)
{
  <p>@item.Name</p>
}
于 2012-09-07T15:06:49.790 回答
0

假设您的类型是foo. 以您的方式通过您ViewBag.Types的方式,并在视图中执行此操作:

@{
    var TypeList= (List<foo>)ViewBag.Types;
}

然后做:

@foreach (var item in TypeList)
    {
       @item.Name
    }

注意:您可能需要写入foo实体的完整路径

于 2012-09-07T15:17:30.863 回答