ASP.NET MVC视图和强类型ViewData

5
我强烈推荐使用强类型的视图数据来处理我的ASP.NET MVC视图,原因有很多。我实际上更喜欢早期ASP.NET MVC预览版中的带代码后置的视图,因为代码后置是定义POCO视图数据类的自然位置,它们通常与实际视图具有1:1的关系。
在ASP.NET RTM视图中是否有任何方法可以使用代码后置,或者这不是一个好的方法?
编辑: 我之所以想要代码后置是因为我将ViewData视为视图的属性。如果视图是一个类,那么ViewData就是其中的一个属性。在单独的程序集中定义ViewData感觉很不自然。
4个回答

6

经过将近一年的使用MVC,我可以确认在视图中我甚至没有需要使用代码后台。如果你还在使用代码后台,你可能仍然在思考WebForms。请放弃它。

视图应该只用来展示模型数据。简单的决策比如应该应用哪个CSS类可以直接在视图中通过服务器标签进行处理。更复杂的决策应该由控制器或业务逻辑来处理。


但你是否使用强类型的ViewData?在哪里定义这些类呢? - terjetyl
这些类应该在它们自己的程序集中 - MyProject.Models,对于更大的项目,则是MyProject.ViewModels(或.DTO)。 - Jason
@TT:是的,我使用强类型视图。我把模型放在“Models”文件夹中。模型基本上是一个单独的薄层,用于保存为视图准备好的数据以供显示。 - user151323
我想我只是被 ViewData 类的物理位置所困扰,但在 Models 文件夹中放置它们是有道理的。谢谢。 - terjetyl

1

出于各种原因,我更喜欢使用强类型的ViewData来处理我的ASP.NET MVC视图。

当然,这仍然可以做到。NerdDinner FormviewModels page 6 我使用它,而且它完美地工作。我遇到了一些问题,你可以在我的两个问题这里这里中找到。

如上所述,我不明白为什么你要使用CodeBehind。如果你想要这样做,我建议你阅读有关MVC结构和视图用途的一般信息。


0

在MVC框架中,为视图编写代码后台与其目的之一相悖。

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

那些具有ViewState组合的人应该消除对代码后台的需求。


0

MVC 架构与Web Forms 不同,不需要编写代码behind。

整个 MVC 架构基于控制器来控制事物,而不是 webcontrol 事件产生的魔法。

就我个人而言,我正在接触 MVC 的黑暗面,但我喜欢现在看到的东西。

你可以使用 "return View(item)" 在你的操作中轻松地为视图添加内容,其中item是强类型数据,并且可以在模型中轻松验证它。(这非常棒,因为输入错误将显示在视图上)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接