我应该何时从我的视图中的数据库查询ASP.NET MVC

时间:2014-04-15 09:40:58

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

问题:

如果我有一个场景,我不想更改我的模型属性,并且需要从某个表中获取一个属性,那么如果我在视图中编写查询并显示结果,这样可以吗?

如果答案是否定的,我想知道为什么这不是一个好方法。

5 个答案:

答案 0 :(得分:3)

在我看来,你永远不应该这样做。只是因为你放弃了你正在使用的工具的整个范例。

在几年内,这对您或其他维护代码的人来说很困惑。如果您不想更改所有内容,请使用dynamic属性,ViewBag或其他选项来保持您的灵活性,测试能力等。

答案 1 :(得分:2)

视图不是数据结构的镜像。实际上,通常它是一个 聚合和/或操纵用户友好的演示文稿支持的数据。

答案 2 :(得分:2)

首先,它被称为MVC的原因是因为关注点的分离。 View只关注用户界面。查询在控制器上完成。另一个问题是,如果你把所有东西放在一个已经超过MVC目的的单一页面中,那就太麻烦了。

答案 3 :(得分:1)

虽然有些情况下从View查询数据库可能看起来更容易和更合适,但您应该为打破separation of concerns(SoC)的后果做好准备。当您将DAL分散到多个层时,将来很难重新考虑数据库。另一个问题是安全性 - 如果您决定稍后实施数据库安全性或基于控制器的安全性,则基于视图的查询将成为安全点。

但是,如果项目很小,我会交易SoC以获得性能。

答案 4 :(得分:1)

在我看来,您永远不应该在Views中进行查询。它被称为 MVC ,使用它的正确方法是分离概念。

您应该有ModelControllerViewRepository(作为最简单的方法)。顾名思义,View必须仅用于显示已处理的数据。

有关MVC最佳做法的更多信息is here

我记得当我开始使用MVC时。我对此并不了解,我的团队负责人告诉我,这样做绝对不是一个好选择。

<强>结论:

这只是设计和观点的问题。如果您正在为自己或大学做项目,请按照您的意愿组织代码。如果您在专业环境中工作,您应该尊重一些工作原则

另一个需要考虑的重要因素是:如果另一个人必须重构或修改你的代码,他必须知道在哪里找到方法,在哪里找到模型等等。