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