山东建设厅官方网站二建报名,网站建设思维导图,天津市建设局网站,我们的网站下面说一下我们知道在asp.net mvc中 视图可以绑定一个实体模型 然后我们三层架构中也有一个model模型 但是这两个很多时候却是不一样的对象来的 就拿微软的官方mvc例子来说明 微软的视图实体中 有loginmodel 有registermodel 等等 这些视图模型 都只是占用户实体的某几个字段而…下面说一下 我们知道在asp.net mvc中 视图可以绑定一个实体模型 然后我们三层架构中也有一个model模型 但是这两个很多时候却是不一样的对象来的 就拿微软的官方mvc例子来说明 微软的视图实体中 有loginmodel 有registermodel 等等 这些视图模型 都只是占用户实体的某几个字段而已甚至有一些视图模型 的字段是来自多个表的那么很多人可能用最原始的赋值方法比如用户注册后 拿到post过来后的实体这个时候再重新new一个三层的model实体然后在一个个的字段赋值过来 比如 [httppost] public ActionResult Register(LoginModel model) { UserModel userModel new UserModel(); userModel.Name model.Name; userModel.Email model.Email; userModel.Password model.Password; ...................................... UserDao.Add(userModel); } 这样非常累赘简直就是体力活。 下面我总结了两个方法这两个方法可以自动地根据实体的属性名称自动的赋值过来第一个是将某个实体的属性值之间赋值到一个新的实体中如果新的实体中含有自己的属性那么就用初始值第二个是将一个A的实体赋值到B中 那么这个时候 我们可以用下面两个方法来转换 自动赋值两个对象的 protected T AssembleInfoT, T2(T2 model) { PropertyInfo[] propertyInfoList GetPropertyInfoArray(typeof(T)); PropertyInfo[] propertyInfoList2 GetPropertyInfoArray(typeof(T2)); object obj Activator.CreateInstance(typeof(T), null);//创建指定类型实例 for (int i 0; i propertyInfoList.Length; i) { for (int J 0; J propertyInfoList2.Length; J) { if (propertyInfoList2[J].Name.ToLower() propertyInfoList[i].Name.ToLower()) { propertyInfoList[i].SetValue(obj, propertyInfoList2[J].GetValue(model,null), null);//给对象赋值 } } } return (T)obj; } /// summary /// 反射获取类的属性 /// /summary /// param nametype/param /// returns/returns protected PropertyInfo[] GetPropertyInfoArray(Type type) { PropertyInfo[] props null; try { object obj Activator.CreateInstance(type); props type.GetProperties(BindingFlags.Public | BindingFlags.Instance); } catch (Exception ex) { } return props; } ---------------------使用的时候 只需要 ModelInfo info AssembleInfoModelInfo, ModelModel(model); 就可以自动根据属性名称自动将modelmodel这个实体的值自动赋值到modelinfo 感谢你的阅读希望对你有帮助 谢谢 转载于:https://www.cnblogs.com/maijin/p/4768684.html