asp.net mvc 视图和强类型视图数据

Posted

技术标签:

【中文标题】asp.net mvc 视图和强类型视图数据【英文标题】:asp.net mvc views and strongly typed viewdata 【发布时间】:2009-08-26 11:13:42 【问题描述】:

出于各种原因,我更喜欢我的 asp.net mvc 视图的强类型视图数据,实际上我更喜欢带有代码隐藏的视图,因为它们在早期的 asp.net mvc 预览中是因为代码隐藏是定义 poco viewdata 类的自然位置因为它们通常与实际视图具有 1:1 的关系。

有没有办法在 asp.net rtm 视图中隐藏代码或者这不是一个好方法?

编辑: 我想要代码隐藏的唯一原因是我将 ViewData 视为视图的属性。如果视图是一个类,那么 ViewData 就是它的属性之一,在单独的程序集中定义它感觉不自然。

【问题讨论】:

【参考方案1】:

在与 MVC 一起工作了将近一年之后,我可以确认我甚至一次都不需要代码隐藏来查看视图。如果您使用代码隐藏,您可能仍在考虑 WebForms。放下它。

视图应该只显示模型数据。可以直接在服务器标签内的视图中执行简单的决定,例如应用什么 CSS 类。更复杂的决策应该交给控制器或业务逻辑。

【讨论】:

但是您是否使用强类型视图数据,以及您在哪里定义这些类? 这些类应该在它们自己的程序集中 - MyProject.Models,对于较大的项目,MyProject.ViewModels(或 .DTO)。 @TT:是的,我使用强类型视图。我将模型保存在“模型”文件夹中。模型基本上代表一个单独的薄层,它保存准备好的数据以供视图显示。 我想我只是对 ViewData 类的物理位置感兴趣,但是将它们放在 Models 文件夹中是有意义的。谢谢【参考方案2】:

我更喜欢强类型视图数据 我的 asp.net mvc 视图的各种 原因

当然,这仍然可以完成。 NerdDinner FormviewModels page 6 我使用它,它工作得很好。有一些问题你可以在我的两个问题here 和here 中找到 .

如上所述,我不明白您为什么要使用代码隐藏。如果您愿意,我建议您阅读有关 MVC 结构和视图用途的一般信息。

【讨论】:

【参考方案3】:

视图的代码隐藏违背了 MVC 框架的目的之一。

视图应该尽可能简单,只专注于呈现,同时让控制器或扩展处理所有业务逻辑。

那些结合了 ViewState 的应该消除对代码隐藏的需要。

【讨论】:

【参考方案4】:

在 MVC 架构中不需要像在 Web 窗体中那样使用代码。

整个 MVC 架构建立在控制器控制的东西上,而不是 web 控制事件做魔术。

就我个人而言,我刚刚进入 MVC 的阴暗面,但我喜欢我现在在这里看到的内容。

您可以在您的操作中使用“return View(item)”轻松地将内容放在您的视图上 -> 其中项目可以是强类型数据并在您的模型中轻松验证它。 (这很好,因为输入错误会显示在视图上)

【讨论】:

以上是关于asp.net mvc 视图和强类型视图数据的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 强类型视图与否?

ASP.NET MVC 强类型部分视图,给出无法加载类型错误

带有 DropDownList 的 ASP.NET MVC 强类型视图

Asp.Net Mvc的几个小问题

在 ASP.NET MVC 5 中搭建外部模型

Asp.Net MVC JQuery 的优点