问题:
如果我有一个场景,我不想更改我的模型属性,并且需要从某个表中获取一个属性,那么如果我在视图中编写查询并显示结果,这样可以吗?
如果答案是否定的,我想知道为什么这不是一个好方法。
答案 0 :(得分:3)
在我看来,你永远不应该这样做。只是因为你放弃了你正在使用的工具的整个范例。
在几年内,这对您或其他维护代码的人来说很困惑。如果您不想更改所有内容,请使用dynamic
属性,ViewBag
或其他选项来保持您的灵活性,测试能力等。
答案 1 :(得分:2)
是
视图不是数据结构的镜像。实际上,通常它是一个 聚合和/或操纵用户友好的演示文稿支持的数据。
答案 2 :(得分:2)
首先,它被称为MVC的原因是因为关注点的分离。 View只关注用户界面。查询在控制器上完成。另一个问题是,如果你把所有东西放在一个已经超过MVC目的的单一页面中,那就太麻烦了。
答案 3 :(得分:1)
虽然有些情况下从View查询数据库可能看起来更容易和更合适,但您应该为打破separation of concerns(SoC)的后果做好准备。当您将DAL分散到多个层时,将来很难重新考虑数据库。另一个问题是安全性 - 如果您决定稍后实施数据库安全性或基于控制器的安全性,则基于视图的查询将成为安全点。
但是,如果项目很小,我会交易SoC以获得性能。
答案 4 :(得分:1)
在我看来,您永远不应该在Views
中进行查询。它被称为 MVC ,使用它的正确方法是分离概念。
您应该有Model
,Controller
,View
和Repository
(作为最简单的方法)。顾名思义,View
必须仅用于显示已处理的数据。
有关MVC最佳做法的更多信息is here。
我记得当我开始使用MVC时。我对此并不了解,我的团队负责人告诉我,这样做绝对不是一个好选择。
<强>结论:强>
这只是设计和观点的问题。如果您正在为自己或大学做项目,请按照您的意愿组织代码。如果您在专业环境中工作,您应该尊重一些工作原则
另一个需要考虑的重要因素是:如果另一个人必须重构或修改你的代码,他必须知道在哪里找到方法,在哪里找到模型等等。