我认为您唯一的目的是在模型绑定期间获取请求验证异常并将错误显示为模型状态错误。这是示例,
using System.Web.Helpers;
public class MyModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
try
{
return base.BindModel(controllerContext, bindingContext);
}
catch(HttpRequestValidationException ex)
{
var modelState = new ModelState();
modelState.Errors.Add(ex.Message);
var key=bindingContext.ModelName;
var value = controllerContext.RequestContext.HttpContext.Request.Unvalidated().Form[key];
modelState.Value = new ValueProviderResult(value, value,CultureInfo.InvariantCulture);
bindingContext.ModelState.Add(key, modelState);
}
return null;
}
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
ModelBinders.Binders.DefaultBinder = new MyModelBinder();
}
这将添加仅在模型状态下进行请求验证的例外。对不起,如果我没有清楚地理解你的问题。