如何在不检查MVC中的单个字段的情况下检查模型对象字段中的更改?

时间:2015-04-01 13:21:18

标签: c# asp.net-mvc asp.net-mvc-4

我有一个大模型

public class SomeModel
{
        public int Id { get; set; }
        .....A lot(24) of Fields here.....
}

现在在Post ActionResult Edit(somemodel SomeModel)我想检查用户是否已根据数据库中的原始模型值更改了任何内容。使用If Else会产生很多混乱的代码。无论如何都要检查用户是否更改了某些内容,以及可能的用户更改了哪个字段?

1 个答案:

答案 0 :(得分:3)

我正在考虑使用像这样的方法

    public class SomeModel
    {
    //... 
     public override bool Equals(object obj)
        {
      var type = this.GetType();
      bool SameObj = true;
     //for each public property from 'SomeModel'
     //[EDITED]type.GetProperties().Each(prop=>{ //  Sorry i'm using custom extension methode here
     //you should probably use this instead
     type.GetProperties().ToList().ForEach(prop=>{
                      //dynamically checks that they're equals 
                      if(!prop.GetValue(this,null).Equals(prop.GetValue(obj,null))){
                          SameObj=false;
                      }
                    }
                return SameObj;
    }
   }

/!\已编辑