Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使用defalut验证消息创建自定义ASP.NET MVC模型绑定器?_Asp.net Mvc_Model Binding - Fatal编程技术网

Asp.net mvc 如何使用defalut验证消息创建自定义ASP.NET MVC模型绑定器?

Asp.net mvc 如何使用defalut验证消息创建自定义ASP.NET MVC模型绑定器?,asp.net-mvc,model-binding,Asp.net Mvc,Model Binding,因为当GET方法用于请求时,MVC使用不变的区域性绑定,所以我想发送表单区域性作为查询字符串参数,并使用自定义MVC绑定器,该绑定器使用给定的区域性绑定GET方法和url中的区域性集来解析模型的值 我已经找到了一些活页夹的例子,这就是我现在钩住的。这将按预期绑定,但验证不起作用,若模型值错误,将引发异常 我怎样才能做得更好,包括默认的验证消息 public class AppModelBinder : DefaultModelBinder { public override object

因为当GET方法用于请求时,MVC使用不变的区域性绑定,所以我想发送表单区域性作为查询字符串参数,并使用自定义MVC绑定器,该绑定器使用给定的区域性绑定GET方法和url中的区域性集来解析模型的值

我已经找到了一些活页夹的例子,这就是我现在钩住的。这将按预期绑定,但验证不起作用,若模型值错误,将引发异常

我怎样才能做得更好,包括默认的验证消息

public class AppModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (value != null && value.AttemptedValue != null && value.AttemptedValue != "")
        {
            // customize get request binding (dafult one uses invariant culture)
            if (controllerContext.HttpContext.Request.HttpMethod == HttpMethod.Get.Method)
            {
                // try to get query string culture
                var queryCultureName = controllerContext.HttpContext.Request.QueryString["Culture"];
                if (queryCultureName != null)
                {
                    CultureInfo queryCulture;
                    try
                    {
                        queryCulture = CultureInfo.CreateSpecificCulture(queryCultureName);

                        return value.ConvertTo(bindingContext.ModelType, queryCulture);
                    }
                    catch (Exception ex)
                    {
                        bindingContext.ModelState.AddModelError(bindingContext.ModelName, ex);
                        return null;
                    }
                }
            }
        }

        return base.BindModel(controllerContext, bindingContext); // System.NullReferenceException is thrown here when invalid value is sent
    }
}