This happens when you do a project with ASP.net MVC 4.0:
Situation Analysis:
"When filling out a form, there are some forms that are not filled out, leave blank, and then post the form directly, and the action uses Updatemodel to update the model, and it turns out that the form fields that were not filled out are all null." ”
Reason analysis:
The project made a judgment null could not commit the update to the database, so the result has not been submitted up
Later on the Internet to find a solution, I share here, convenient to meet this situation after the friend can easily solve
Workaround:
Create a new class to inherit 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);}}
Then replace Defaultmodelbinder in the Application_Start of Global.asax
ModelBinders.Binders.DefaultBinder = new Emptystringtonullmodelbinder ();
This problem can be solved, small series also tried to operate, the result is successful, hope also can help this aspect has the trouble of the child shoes to solve practical problems.