asp.net-mvc - 不区分大小写的模型绑定(bind) MVC 4

标签 asp.net-mvc asp.net-mvc-4 model-binding custom-model-binder value-provider

我希望我的模型绑定(bind)不区分大小写。

我尝试操作从 System.web.Mvc.DefaultModelBinder 继承的自定义模型绑定(bind)器,但我不知道在哪里添加不区分大小写。

我还看了IValueProvider ,但我不想重新发明轮子并自己找到值(value)观。

任何的想法 ?

最佳答案

拥有 CustomModelBinder是解决方案。因为我不需要完全不区分大小写,所以我只检查是否找到了我的属性的小写版本。

public class CustomModelBinder : DefaultModelBinder
{
    protected override void SetProperty(ControllerContext controllerContext, 
                                        ModelBindingContext bindingContext, 
                                        PropertyDescriptor propertyDescriptor, 
                                        object value)
    {
        //only needed if the case was different, in which case value == null
        if (value == null)
        {
            // this does not completely solve the problem, 
            // but was sufficient in my case
            value = bindingContext.ValueProvider.GetValue(
                        bindingContext.ModelName + propertyDescriptor.Name.ToLower());
            var vpr = value as ValueProviderResult;
            if (vpr != null)
            {
                value = vpr.ConvertTo(propertyDescriptor.PropertyType);
            }
        }
        base.SetProperty(controllerContext, bindingContext, propertyDescriptor, value);
    }
}

关于asp.net-mvc - 不区分大小写的模型绑定(bind) MVC 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19562950/

相关文章:

asp.net-mvc - mvc4数据注释比较两个日期

asp.net-mvc - 尝试执行多项目 ASP.Net MVC 站点时出现编译错误

.net - 奇怪的 LINQ 异常

asp.net-mvc-4 - ASP.NET MVC4 模型绑定(bind)

asp.net-mvc-4 - 什么是 antlr3,为什么在 VS2012 MVC4 项目中默认引用它?

c# - 使用 EntityFramework 和 MVC ModelBinding 保存具有特殊字符的字段时出错

javascript - Javascript 中的 Html.Action 包含 js var 作为参数

asp.net - 我无法解决未处理的异常 : cannot set status after HTTP headers already set

asp.net-mvc-3 - MVC 3 将实体作为接口(interface)传递

c# - DateTime 的 MVC 模型绑定(bind)使用 GET 或 POST 是不同的