多个粒度视图模型或单个模型 - Asp.NET MVC3
我正在考虑使用 MVC3 创建我的第一个 ASP.NET MVC 应用程序。
我使用的项目模板包括一些用于注册用户、登录和更新忘记密码的模型。
我希望用户根据我自己的数据存储(可能使用实体框架)并使用 google OAuth 进行身份验证。
我假设我想要一个包含一些标准属性和一些处理“本地”身份验证和 OAuth 调用的业务逻辑的用户模型类,但项目模板让我感到困惑。
我应该为不同的操作(如登录、注册等)创建多个视图模型,然后使用控制器实例化并调用我的模型来执行业务逻辑,还是应该将我的用户模型用于所有不同的操作?
谢谢 本
I'm looking at creating my first ASP.NET MVC application using MVC3.
The project template I used included some models for registering users, logging in and updating a forgotten password.
I want users to be authenticated against my own data store (probably using Entity Framework) and using google OAuth.
I assumed that I'd want a User model class that contained a few standard properties and some business logic which handled the "local" authentication and the OAuth call but the project template has confused me.
Should I be creating multiple view-models for different actions like Login, Register, etc and then using the controller to instantiate and invoke my model to perform the business logic or should I use my User model for all the different actions?
Thanks
Ben
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
每个视图查看模型。这就是规则。每个视图甚至可能有 2 个视图模型(一个用于在 GET 中渲染数据,另一个用于在 POST 操作中从视图接收数据)。不要羞于创建视图模型。您绝对不应该对所有不同的操作使用用户模型,这将是灾难性的。该模型应该由您的服务层使用。用户模型将由该层操作,并且永远不会传递到视图。
您还可以查看 AutoMapper 以在模型类和视图模型之间进行映射。这是一个很棒的工具,特别是当视图模型的数量开始增加时,它会派上用场。
View model per view. That's the rule. There might even be 2 view models per view (one for rendering data in the GET and one for receiving data from the view in the POST action). Don't be shy in creating view models. You definitely shouldn't be using a User model for all different actions, that would be catastrophic. The model should be used by your service layer. A User model will be manipulated by this layer, and never passed to a view.
You may also checkout AutoMapper for mapping between your model classes and view models. It's a great tool and comes in handy especially when the number of view models start to increase.