2010-01-24 64 views
1

我对ASP.NET MVC和MVC一般来说很新。从旧式的“意大利面条”设计实践转到WebForms是一个很大的改变,但在我看来这似乎更大(但更好)。ASP.NET-MVC数据/模型的最佳实践newb

我有一些关于数据特定任务的问题。

  1. 为了简单起见,说我有(50)称为与PIN INT PinId的柱结构的数据库表,值VARCHAR并与列ENTRYID INT,PinId INT另一个表称为条目。
  2. 我有一个MVC视图,它将一个字符串值作为PIN码。
  3. 目标是在Entry表中插入一行。要做到这一点,我必须查找相应的PinId到提供的值。

我的问题是,我在哪里执行数据查找。我可以轻松地在控制器中执行插入新Entry对象的操作,但这是正确的吗?不知怎的,这种查找应该在模型中执行吗?

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

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

欢呼声和感谢堆垛机!

回答

1

看看ModelBinders。这使您可以定义将来自发送到您的操作的数据的输入绑定到Model对象的方式。您的操作也可以采取您想要保存的类型的参数,并且在ModelBinder中,您可以对存储库进行一些查找等。

如果您执行搜索,有很多好博客文章,现在你知道要看ModelBinder了。斯科特Hanselman有一个良好的基础之一:

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

0

切勿将搜索,添加,更新,控制器内删除代码。实际上,控制器中应该没有代码。

在MVC世界中,控制器只是一种从视图到业务层的模型,反之亦然。目标是尽可能少地使用代码。

如果你可以使用Linq2SQl,那么这将是放置实体的好地方。然后,您可以使用您的数据存储库来完成繁重的工作,不仅如你所说的那样,还包括所有其他小事情。

Linq2SQL将创建一个部分类。所以,你可以创建另一个部分类,它将为你做CRUD和搜索工作。