2010-06-14 59 views
2

其实我只做一个主页,只有一个名为Index()的操作返回视图Index.ascx。从asp.net开始MVC

此索引页面将由最新新闻和最新注册用户组成,我认为创建两个部分视图是最好的主意(这种方式我可以在其他视图中使用它)。

的另一方面我有,对于得到的东西调用数据库中的数据访问类(得到的最新消息,让最后用户,等...)

我的问题很简单,我应该打电话到该数据访问我的HomeController的Index()动作中的类,并向ViewData中添加获得的数据?

我认为这个index()动作不应该是将这些数据传递给部分视图的负责人,对吧?

你能帮我一下吗?

im messing too much? ;-)

在此先感谢。

最好的问候。

何塞

回答

3

我建议你使用动作方法只能控制决定显示内容而不是它显示的内容。

我会说数据访问逻辑封装在一个更多的层,以便它从控制器动作松散耦合。

这导致“更薄的操作和更粗糙的模型”。您可能想要使用 in Scotts blog中描述的存储库模式,或者按照Domain Driven Design的说明来说明每个层的责任。

希望这会有所帮助。

感谢, 维杰

4

你应该使用Repository模式来封装数据访问,并从逻辑/ UI分开。 Index()方法的控制器应该访问存储库并从那里接收数据。

一个很好的学习ASP.NET MVC的教程是这样的:NerdDinner。在那里,也解释了库类的用法。

[更新]更好的教程是官方ASP.NET MVC Music Store Step-by-Step Tutorial

通过使用您访问其他优点,如依赖注入的可能性,这是一个可测试性增强很大的仓库......

+0

的NerdDinner确实是一个很好的开始。我也用它来熟悉asp.net mvc。 – Carra 2010-06-14 10:20:01

1

你在思考是当场它是理想的分离新闻和用户列表你可以在其他部分重复使用它们。

将这些数据函数分离出来也是一个理想的选择,通常称为资源库类。所以你可能有一个News存储库类,在那里有一个GetNews函数。然后您可以从新闻列表中调用该功能。任何你想要获得这些列表的地方你都可以调用这个函数,而不是再次编写相同的数据检索代码。