加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

entity-framework – 在mvc中使用控制器中的模型类是不好的做法

发布时间:2020-12-16 03:45:33 所属栏目:asp.Net 来源:网络整理
导读:我想在asp.net mvc中使用ORM或数据库表时与最佳实践进行比较.我遇到的一个主要问题是我应该直接在控制器中实例化模型类.不查询数据库,只需使用模型类来存储值. 对于例如如果我使用实体框架作为模型……那么在控制器中使用实体类对象是不好的做法.有时直接使
我想在asp.net mvc中使用ORM或数据库表时与最佳实践进行比较.我遇到的一个主要问题是我应该直接在控制器中实例化模型类.不查询数据库,只需使用模型类来存储值.

对于例如如果我使用实体框架作为模型……那么在控制器中使用实体类对象是不好的做法.有时直接使用控制器中生成的数据库类而不是创建ViewModels甚至ViewData更容易.我们有一个数据访问层和一个业务层,其中应用了所有查询和业务逻辑,但虽然更容易,但我不喜欢在控制器中访问模型的想法,但这真的是一个不好的做法吗?

解决方法

是的,这是一个不好的做法,因为“过度发布”的问题.

例如,考虑UserProfile的实体模型:

public class UserProfile
  {
    public string UserName { get; set; }
    public bool IsAdmin { get; set; }
    public string EmailAddress { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
  }

您的用户配置文件页面允许用户编辑其FirstName,LastName和EmailAddress.

一个不道德的用户可以简单地修改表单以发布“IsAdmin”以及其他值.因为您的Action期望输入UserProfile,所以IsAdmin值也将被映射,并最终保持不变.

这是an excellent writeup about the perils of under and overposting.

但是,我认为将Entity模型直接绑定到[HttpGet]方法没有错.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读