从asp.net MVC开始

时间:2010-06-14 10:04:34

标签: asp.net-mvc asp.net-mvc-2

实际上我正在做一个只有一个名为Index()的动作的主页,它返回视图Index.ascx。

此索引页面将由最新消息和最新注册用户组成,我认为创建两个部分视图是最好的想法(这样我可以在其他视图中使用它)。

对于另一方面,我有一个数据访问类,它调用数据库获取东西(获取最新消息,获取最后用户等...)

我的问题很简单,我应该在HomeController的Index()操作中调用此数据访问类,并将所获得的数据添加到ViewData中吗?

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

你可以帮个忙吗?

我太乱了? ; - )

提前致谢。

最诚挚的问候。

3 个答案:

答案 0 :(得分:4)

您应该使用Repository模式封装数据访问并将其与Logic / UI分开。 Index()方法的控制器应该访问存储库并从那里接收数据。

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

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

通过使用存储库,您可以获得其他优势,例如依赖注入的可能性,这是对可测试性的极大增强......

答案 1 :(得分:3)

我建议您使用操作方法来控制显示内容,而不是显示内容。

我想说将数据访问逻辑封装在一个层中,以便它与控制器操作松散耦合。

这导致'更薄的动作和更粗略的模型'。您可能希望使用 in Scotts blog所述的存储库模式,或遵循Domain Driven Design来说明每个层的责任。

希望这有帮助。

谢谢, 维杰

答案 2 :(得分:1)

您认为将新闻和用户列表分成局部视图是理想的,因为您可以在其他部分重复使用它们。

将这些数据函数分离成一个单独的类通常调用存储库类也是理想的。所以你可能有一个新闻库类,里面有一个GetNews函数。然后,您可以从新闻列表中调用该功能。在您想要获取这些列表的任何其他地方,您只需调用该函数,而不是再次编写相同的数据检索代码。