具有带有输入的表单:
<input name="MyProperty" />
他各自的模型/属性:
public class MyModel
{
public string MyProperty { get; set; }
}
提交表单时,我需要在MyProperty
中绑定一个空字符串而不是null。
我尝试了从DefaultModelBinder
继承的CustomBinder
public class MyCustomBinder : DefaultModelBinder
{
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
{
if (propertyDescriptor.Name == "MyProperty")
{
var valueToBind = bindingContext.ValueProvider.GetValue(propertyDescriptor.Name);
if(valueToBind != null && valueToBind.AttemptedValue == null)
{
propertyDescriptor.SetValue(bindingContext.Model, "");
return;
}
else
{
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
return;
}
}
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
}
但是valueToBind.AttemptedValue而不是null,它带有占位符作为文本。但是在控制器中,它为空。
当MyProperty
的值为null时,我需要将其转换为空字符串。