我正在使用 ASP.NET MVC Razor View 引擎,并且正在尝试使用 Viewbag。以下代码对我不起作用。在我的 Controller 中
ViewBag.courses = new List<dynamic>();
ViewBag.courses.Add(new { Name = "Math" });
然后在我的 View 中
@foreach(dynamic course in ViewBag.courses)
{
<li>@course.Name</li>
}
但是它给我一个错误,说对象类(class)没有名称的定义。调试器给我值,并正确显示所有内容。有什么办法可以让它工作吗? (我已经有了解决方法,我只是更愿意使用它)。
提前致谢。
最佳答案
就我个人而言,我会使用以下方法解决它:
public class Course
{
public String Name { get; set; }
}
public class CoursesViewModel
{
private IList<Course> courses;
public IList<Course> Courses{
get { return this.courses ?? (this.courses = new List<Course>()); }
set { this.courses = value; }
}
}
Controller :
public ActionResult Index()
{
CoursesViewModel model = new CoursesViewModel();
model.Courses.Add(new Course { Name = "Math" });
return View(model: model);
}
你的观点:
@model CoursesViewModel
@* ... *@
<ul>
@foreach (Course course in Model.Courses)
{
<li>@course.Name</li>
}
</ul>
@* ... *@
使用模型,这就是 MVC 的全部意义所在。它让生活变得如此轻松,更不用说您可以将属性应用于模型以进一步自定义其显示方式(模板等)。 [Ab]按照你现在的方式使用 dynamic
只会让你的网站应对 future 的问题,更不用说一堆来回的猫捉老鼠游戏了(“我给那个属性命名了什么?”,“'foo' 又是什么值类型?”,...),忽略是否有其他人需要处理您正在生成的代码。
关于c# - 如何在 ASP.NET MVC 中获取 ViewBag 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273341/