這篇文章主要介紹了解決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();
這樣問題就可以解決了,小編也嘗試進行了操作,結果成功了,希望也能幫助這方面有困擾的童鞋解決實際問題
新聞熱點
疑難解答
圖片精選