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