C# 如何从视图中的视图重新使用模型类型?
如何重用声明的模型类型?在视图的顶部是声明C# 如何从视图中的视图重新使用模型类型?,c#,asp.net-mvc-3,razor,viewmodel,C#,Asp.net Mvc 3,Razor,Viewmodel,如何重用声明的模型类型?在视图的顶部是声明 @model mySpace.viewModels.viewModel 我想做的是在后面的页面中,做一些类似 @for( viewModel vM in ViewBag.viewModels ) { //some foo bar } 如果您已经有了一个强类型视图,那么您真的不应该考虑ViewBag/ViewData。将强类型视图添加到视图模型后,在此视图中需要做的就是使用此视图模型的属性,如下所示: @foreach (viewModel vm
@model mySpace.viewModels.viewModel
我想做的是在后面的页面中,做一些类似
@for( viewModel vM in ViewBag.viewModels )
{
//some foo bar
}
如果您已经有了一个强类型视图,那么您真的不应该考虑ViewBag/ViewData。将强类型视图添加到视图模型后,在此视图中需要做的就是使用此视图模型的属性,如下所示:
@foreach (viewModel vm in Model.SomeSubModels)
{
//some foo bar
}
或者更好,为了避免视图中可怕的foreach
循环,可以使用编辑器模板(如果需要编辑某些属性):
或者使用显示样板(如果只希望向用户显示视图模型特性的值):
因此,在设计ASP.NET MVC应用程序时,这里有两条基本规则要遵循(按顺序):
规则1。是真正的基础,也是最重要的。如果您不遵守此规则,那么您实际上没有正确地执行ASP.NET MVC。如果您已经有了强类型视图,那么您甚至不应该考虑ViewBag/ViewData。将强类型视图添加到视图模型后,在此视图中需要做的就是使用此视图模型的属性,如下所示:
@foreach (viewModel vm in Model.SomeSubModels)
{
//some foo bar
}
或者更好,为了避免视图中可怕的foreach
循环,可以使用编辑器模板(如果需要编辑某些属性):
或者使用显示样板(如果只希望向用户显示视图模型特性的值):
因此,在设计ASP.NET MVC应用程序时,这里有两条基本规则要遵循(按顺序):
规则1。是真正的基础,也是最重要的。如果您不遵守此规则,那么您确实没有正确执行ASP.NET MVC。我有一个列出项目的视图,并且还允许创建项目。当用户希望创建项目时,我不想回发整个列表,这就是为什么在本例中,我选择不使用强类型视图模型,因为我不想为了添加一个项目而重新发布整个列表。@TravisJ,在ASP.NETMVC中,绝对不应该选择不使用强类型视图模型,而应该选择ViewBag/ViewCrap。视图模型是未来的发展方向。他们会解决你遇到的每一个问题。不要害怕向您的项目中添加新类。如果用
[httppost]
装饰的控制器接受viewmodel,并且viewmodel被传递到视图中,并带有完整的列表,那么该列表不会也被发布吗?我最关心的是发布的速度。@TravisJ,我完全不知道你在说什么。我有一个视图,可以列出项目,也可以创建项目。当用户希望创建项目时,我不想回发整个列表,这就是为什么在本例中,我选择不使用强类型视图模型,因为我不想为了添加一个项目而重新发布整个列表。@TravisJ,在ASP.NETMVC中,绝对不应该选择不使用强类型视图模型,而应该选择ViewBag/ViewCrap。视图模型是未来的发展方向。他们会解决你遇到的每一个问题。不要害怕向您的项目中添加新类。如果用[httppost]
装饰的控制器接受viewmodel,并且viewmodel被传递到视图中并带有完整的列表,那么该列表是否也会被发布?我最关心的是发布的速度。@TravisJ,我完全不知道您在说什么。
@Html.DisplayFor(x => x.SomeSubModels)