在用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();
這樣問題就可以解決了,小編也嘗試進行了操作,結果成功了,希望也能幫助這方面有困擾的童鞋解決實際問題。