解决asp.net mvc UpdateModel更新对象后出现null问题的方法
在用asp.net mvc 4.0做项目的时候遇到的这种情况:
情况分析:
“在填写表单的时候,有一些表单没有填写,留空,然后直接post 提交表单,action中用UpdateModel 来更新model,结果发现那些没有填写的表单字段全部变成null。”
原因分析:
项目中做了判断null不能提交更新到数据库中,所以导致一直提交不上去
后来网上查了一下找到了解决办法,我在这里分享一下,方便以后遇到这种情况的朋友可以方便解决
解决方法:
新建一个类继承DefaultModelBinder
using System.ComponentModel;
using System.Web.Mvc;
namespace CustomerWebsite.Mvc
{
public sealed class EmptyStringToNullModelBinder : DefaultModelBinder
{
protected override void SetProperty(ControllerContext controllerContext,
ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value)
{
if (value == null && propertyDescriptor.PropertyType == typeof(string))
{
value = string.Empty;
}
base.SetProperty(controllerContext, bindingContext, propertyDescriptor, value);
}
}
}
然后在Global.asax的Application_Start中替换DefaultModelBinder
ModelBinders.Binders.DefaultBinder = new EmptyStringToNullModelBinder();
这样问题就可以解决了,小编也尝试进行了操作,结果成功了,希望也能帮助这方面有困扰的童鞋解决实际问题。
最新文章
- python---filecmp
- iNeedle系统之国舜项目
- python刷题专用函数。。
- poj 3281 Dining【拆点网络流】
- MySQL数据库分区修改【原创】
- python重试装饰器的简单实现
- Cisco Packet Tracer 6.0 实验笔记
- Oracle 导入、导出DMP(备份)文件
- parrotsec 和 kali安装系统的时候出现“executing grub-install dummy”的解决方案
- PLSQL developer 连接不上64位Oracle 解决办法
- Hive command
- Spring Batch框架流程的简单介绍
- python的垃圾回收机制【转】
- redis之hello
- USACO Section1.3
- 使用Qt框架开发http服务器问题的记录
- spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)
- JPA为字段设置默认值
- Boost scoped_ptr scoped_array 以及scoped_ptr与std::auto_ptr对比
- MySQL 开机自启动