我有这个viewmodel
public class FooBarViewModel
{
public string Foo { get; set; }
[AllowHtml]
public string Bar { get; set; }
}
我希望向HttpRequestValidationException
添加一条消息,而不是在.Foo
提交ModelState
的情况下提交h {{1}}。我怎么能这样做?
答案 0 :(得分:1)
您也可以使用Foo
属性修饰[AllowHtml]
属性,并在控制器内部检查它是否包含允许您向模型状态添加自定义错误的HTML。
答案 1 :(得分:0)
在DefaultModelBinder
调用ValueProvider.GetValue
时,ModelState
会抛出异常。
要更改行为以捕获异常并将其转换为DefaultModelBinder
错误,您需要扩展或替换BindModel
。
一种可能性是覆盖GetValue
,并在其调用ValueProviderResult valueProviderResult = bindingContext.UnvalidatedValueProvider.GetValue(bindingContext.ModelName, skipValidation: !performRequestValidation);
时:
bindingContext.ModelState.AddModelError
尝试捕捉异常并致电DefaultModelBinder
。
问题在于{{1}}非常复杂,因此您可能需要仔细考虑这种变化如何与模型绑定生态系统的其余部分进行交互。