用于newb的ASP.NET-MVC数据/模型最佳实践

时间:2010-01-24 18:12:14

标签: c# asp.net-mvc model-view-controller

我对ASP.NET MVC和MVC很新。从旧式的“意大利面”设计实践转向WebForms是一个很大的变化,但这在我看来似乎更大(但更好)。

我对数据特定任务有一些疑问。

  1. 为简单起见,假设我有一个名为PIN的数据库表,其列结构为PinId INT,Value VARCHAR(50),另一个表名为Entry,其列为EntryId INT,PinId INT。
  2. 我有一个MVC视图,它将字符串值作为PIN码。
  3. 目标是在Entry表中插入一行。为此,我必须将相应的PinId查找为提供的值。
  4. 我的问题是,我在哪里执行此数据查找。我可以在我执行插入新Entry对象的控制器中轻松完成,但是这样吗?是否应该以某种方式在模型中执行此查找?

    此外,我遵循WROX的Professional ASP.NET MVC 1.0中概述的说明和实践。我已经创建了一个DataRepository类来处理我的所有数据库繁重的工作,并且正在使用该书中描述的验证类。

    任何见解都会受到欢迎,因为我是MVC的真正新手。

    干杯和谢谢堆叠器!

2 个答案:

答案 0 :(得分:1)

看一下 ModelBinders 。这允许您定义如何将来自发送到操作的数据的输入绑定到Model对象。你的Action也可以只接受你想要保存的类型的参数,在ModelBinder中,你可以对存储库进行一些查找等。

如果您进行搜索,有很多好的博客文章,现在您知道要查看ModelBinder。 Scott Hanselman有一个很好的基础:

http://www.hanselman.com/blog/IPrincipalUserModelBinderInASPNETMVCForEasierTesting.aspx

答案 1 :(得分:0)

切勿在控制器中放置搜索,添加,更新,删除代码。实际上,控制器旁边应该没有代码。

在MVC领域,控制器只是一种从视图到业务层获取模型的方法,反之亦然。目标是尽可能少地编写代码。

如果您可以使用Linq2SQl,那么这将是放置实体的好地方。然后,您可以使用您的数据存储库,不仅可以执行繁重的操作,还可以执行其他所有操作。

Linq2SQL将创建一个分部类。因此,您可以创建另一个部分类,它将为您执行CRUD和搜索工作。