Asp.net mvc 为什么要使用视图模型?
我不熟悉使用ASP.NETMVC开发web应用程序。事实上,无论技术如何,我对开发web应用程序还是相当陌生的 目前,我正在做一个项目,只是为了更好地了解ASP.NETMVC框架。在SO和internet上的其他地方阅读时,一致认为视图不应直接处理业务对象(即实现业务逻辑并包含相关属性的对象)。相反,应该使用视图模型。然而,这带来了几个问题:Asp.net mvc 为什么要使用视图模型?,asp.net-mvc,viewmodel,Asp.net Mvc,Viewmodel,我不熟悉使用ASP.NETMVC开发web应用程序。事实上,无论技术如何,我对开发web应用程序还是相当陌生的 目前,我正在做一个项目,只是为了更好地了解ASP.NETMVC框架。在SO和internet上的其他地方阅读时,一致认为视图不应直接处理业务对象(即实现业务逻辑并包含相关属性的对象)。相反,应该使用视图模型。然而,这带来了几个问题: 我应该将验证代码放在哪里 我需要添加代码来映射业务对象和视图模型 事实上,它看起来相当麻烦,我还没有看到任何人正确解释为什么将业务对象传递给视图是个坏
- 我应该将验证代码放在哪里
- 我需要添加代码来映射业务对象和视图模型
- 视图对显示数据有特定的要求(本地化/全球化),因此您要么在视图中使用意大利面代码,要么将此代码放在模型中,这样它们在其他应用程序中就不那么可重用了,因为您用特定的表示材料污染了它们
- 根据视图,您有不同的验证要求。让我们以添加和更新视图为例。在Add视图中,不需要Id属性,也不需要它,因为您将插入一个新项。在更新视图中,Id属性是必需的,因为您将更新现有项。如果没有视图模型,很难处理这些特定的验证规则
- 模型可能包含诸如
之类的属性,然后我将控制器动作的含义留给您想象,并带有以下签名:IsAdmin
假设您已通过不包含此属性对基础窗体隐藏了此属性[HttpPost] public ActionResult CreateUser(BusinessObjectUser user) { ... }
- 业务模型不会经常更改,而UI可以更频繁地更改。如果您的客户要求您将屏幕一分为二怎么办?您呈现信息的方式和格式也会发生变化。如果您直接在视图中使用模型,则视图的稀疏性会随着每次更改而变得越来越差
- 如果OP使用了视图模型,我在asp.net-mvc标记中回答的关于StackOverflow的问题中大约60%不会被问到
对。但是使用类似的工具可以大大减少手工编写的样板代码量。使用视图模型的三个原因: 理由1:从视图中删除逻辑 理由二:安全 原因三:松耦合 以下链接可能有用:
MVC易于理解,开销非常小。但是那些已经使用模型-视图-控制器模式一段时间的人知道它并不完美。甚至不接近。模型-视图-模型模式提供了一个有趣的替代方案 了解模型-视图-模型模式扩展了模型-视图-控制器模式非常重要。如果你习惯了MVC,这并不是一个戏剧性的范式转变。尽管MVVM的优势是微妙的,但它们是深刻的 与MVC相比,MVVM有哪些优势
感谢您的回复,但我并不是在寻找如何处理这些问题的答案,而是在寻找一个解释,说明为什么我应该从视图模型开始。像AutoMapper这样的工具有助于传输TGH