個人的には、次の方法で解決します。
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; }
}
}
コントローラ:
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
そのままの方法を使用すると、サイトが将来の問題にさらされるだけであり、いたちごっこを行ったり来たりすることは言うまでもありません (「そのプロパティの名前は何ですか?」、「値の型は何だったのですか?」 「また 'foo' ?」、...)、生成しているコードで作業する必要がある人が他にいるかどうかを無視します。