Breaking? Change In Asp.Net MVC2
In MVC1, by default an empty textbox was sent as string.Empty to the controller on POST. In MVC2, it now sends the value as NULL. See ModelMetadata.ConvertEmptyStringToNull . I think there are some valid reasons for why they made the change – see Brad Wilson’s comment for more. If your system relies on string.Empty, you’ve got a problem. There are several options for handling this. The first is using the DisplayFormatAttribute on every property that needs it. Painful. Here’s an example: [DisplayFormat(ConvertEmptyStringToNull=false)] public string FirstName { get; set; } You can also write a custom binder that sets this value to false. Like so: public class CustomStringModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); if (bindingContext.ModelType == typeof(string)) { ...