自定义列活页夹返回“占位符文本”而不​​是null?

时间:2018-11-30 04:18:33

标签: asp.net-mvc asp.net-mvc-5 model model-binding

具有带有输入的表单:

<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时,我需要将其转换为空字符串。

0 个答案:

没有答案