c# – .Net MVC – 从视图中访问数据库不仅仅是糟糕的实践?

我见过一些开发人员实例化从视图中访问数据库的模型.通常,当他们想要访问html partial时,他们会这样做,他们只是在视图中创建一个新的viewmodel:
<div class='blogListing'>
    @Html.Partial("BlogListing",new BlogListingviewmodel(10));
</div>

对我来说,最佳做法是在viewmodel中实例化所有模型,然后将它们传递给部分模型.在下面的示例中,BlogHomeviewmodel将创建一个新的BlogListingviewmodel(10)并将其设置为要使用的View的公共属性

@Model BlogHomeviewmodel

<div class='blogListing'>
    @Html.Partial("BlogListing",Model.BlogListing);
</div>

我的问题是,这不仅仅是一个糟糕的做法/维护问题吗?从View中访问数据库是否还存在性能问题?我认为模型几乎可以同时触发所有数据库请求,但在View中你已经开始渲染html,因此必须打开和关闭更多连接,减慢页面加载速度.我在这里偏离基地吗?

解决方法

与往常一样,为程序员提供服务的方法不止一种.这就是那句话,对吗?

多年前,当我第一次开始使用MVC框架时,我一直试图找出每个字母应该负责的黄金标准.有很多意见,但最终由您和您的团队决定哪些适合您.

我认为在视图或模型中连接到数据库是不好的做法.有些人在他们的模型中打开连接以获取数据.不是我.当我想到一个模型对它的简单负责时:

>最终将在UI中显示的数据
>正确构建UI所需的数据(例如,有条件地显示某些选项的bool)

我会经常将我的模型称为“自给自足”.这意味着我的模型需要在到达视图时获得所需的所有数据.我让我的控制器处理数据库连接,API调用,LDAP查询等.显然我的控制器不包含这些方法的所有代码(我有适当的专用库来处理不同的需求),但是,它是不同数据源之间的代理.

以这种方式构建应用程序的好处是,您可以确定何时完成繁重的工作.您知道当您调用返回视图(模型)时,您拥有所需的所有数据.您不必从模型或视图中解决错误查询(或缓慢的API调用等).对每个部分负责的内容绘制该线条是使框架对我有用的原因.

请记住,这些是我对如何使用框架的看法.我不是说这是唯一的解决方案.您的开发团队可能会发现更有用的东西,保持这门学科对我来说已经有好几年了.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...