如何从视图中的视图重新使用模型类型?

时间:2012-02-27 22:41:27

标签: c# asp.net-mvc-3 razor viewmodel

如何重用我声明的模型类型?在视图的顶部有声明

@model mySpace.viewModels.viewModel

我想要做的是稍后在页面中执行类似

的操作
@for( viewModel vM in ViewBag.viewModels )
{
 //some foo bar
}

1 个答案:

答案 0 :(得分:3)

如果您已经有一个强类型视图,那么您甚至不应该考虑ViewBag / ViewData。一旦您对视图模型强烈键入视图,您在此视图中所要做的就是使用此视图模型的属性,如下所示:

@foreach (viewModel vm in Model.SomeSubModels)
{
    //some foo bar
}

甚至更好,为了避免视图中出现可怕的foreach循环,您可以使用编辑器模板(如果您需要编辑某些属性):

@Html.EditorFor(x => x.SomeSubModels)

或使用显示模板(如果您只想向用户显示视图模型属性的值):

@Html.DisplayFor(x => x.SomeSubModels)

因此,在设计ASP.NET MVC应用程序时(按此顺序),要遵循以下几条基本规则:

  1. 你忘记了ViewBag / ViewData。它就好像它们不存在一样。你只是将它们擦除。如果你忘了它们,你会为自己做一个真正的服务。
  2. 您定义的视图模型是一个包含视图所需属性的类。
  3. 您的控制器操作会查询您的存储库和域模型,并将结果映射到将传递给视图的此视图模型。
  4. 在相应的视图中,您只需使用控制器操作提供的视图模型的属性来显示一些信息。
  5. 规则编号1.是真正的基础知识,也是最重要的基础知识。如果您不遵守此规则,那么您实际上并没有正确地执行ASP.NET MVC。