C# 针对新手的ASP.NET-MVC数据/模型最佳实践

C# 针对新手的ASP.NET-MVC数据/模型最佳实践,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我对ASP.NETMVC和一般的MVC都很陌生。从旧式的“意大利面条”设计实践转向网络表单是一个很大的变化,但在我看来这似乎更大(但更好) 我有一些关于数据特定任务的问题 为了简单起见,假设我有一个名为PIN的数据库表,列结构为PinId INT,Value VARCHAR(50),另一个名为Entry的表,列结构为EntryId INT,PinId INT 我有一个MVC视图,它接受字符串值作为PIN码 目标是在条目表中插入一行。为此,我必须将相应的PinId查找到提供的值 我的问题是,我在哪

我对ASP.NETMVC和一般的MVC都很陌生。从旧式的“意大利面条”设计实践转向网络表单是一个很大的变化,但在我看来这似乎更大(但更好)

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

  • 为了简单起见,假设我有一个名为PIN的数据库表,列结构为PinId INT,Value VARCHAR(50),另一个名为Entry的表,列结构为EntryId INT,PinId INT
  • 我有一个MVC视图,它接受字符串值作为PIN码
  • 目标是在条目表中插入一行。为此,我必须将相应的PinId查找到提供的值
  • 我的问题是,我在哪里执行这种数据查找。我可以很容易地在控制器中执行插入新条目对象的操作,但这是正确的吗?是否应该以某种方式在模型中执行此查找

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

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


    干杯,谢谢斯塔克尔斯

    看看模型绑定器。这允许您定义如何将发送到动作的数据中的输入绑定到模型对象。您的操作还可以只获取要保存的类型的参数,并且在ModelBinder中,您可以对存储库进行一些查找,等等

    如果您进行搜索,现在您知道要查看ModelBinder,那么有很多关于此的好博客帖子。Scott Hanselman有一个很好的基础:


    看看模型绑定器。这允许您定义如何将发送到动作的数据中的输入绑定到模型对象。您的操作还可以只获取要保存的类型的参数,并且在ModelBinder中,您可以对存储库进行一些查找,等等

    如果您进行搜索,现在您知道要查看ModelBinder,那么有很多关于此的好博客帖子。Scott Hanselman有一个很好的基础:


    切勿在控制器中放置搜索、添加、更新和删除代码。实际上,控制器中几乎没有代码

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

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


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

    切勿在控制器中放置搜索、添加、更新和删除代码。实际上,控制器中几乎没有代码

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

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

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