私はこのビューモデルを持っています
public class FooBarViewModel
{
public string Foo { get; set; }
[AllowHtml]
public string Bar { get; set; }
}
html を含むHttpRequestValidationExceptionifをスローする代わりに、 にメッセージを追加したいと思います。どうすればそれができますか?.FooModelState
私はこのビューモデルを持っています
public class FooBarViewModel
{
public string Foo { get; set; }
[AllowHtml]
public string Bar { get; set; }
}
html を含むHttpRequestValidationExceptionifをスローする代わりに、 にメッセージを追加したいと思います。どうすればそれができますか?.FooModelState
Foo属性を使用してプロパティを装飾することもでき[AllowHtml]ます。コントローラー内で、モデルの状態にカスタム エラーを追加できる HTML が含まれているかどうかを確認します。
DefaultModelBinder例外は、 を呼び出した時点でスローされますValueProvider.GetValue。
ModelState例外をキャッチしてエラーに変換するように動作を変更するには、 DefaultModelBinder.
1 つの可能性はオーバーライドBindModelすることであり、それが呼び出すポイントでGetValue:
ValueProviderResult valueProviderResult = bindingContext.UnvalidatedValueProvider.GetValue(bindingContext.ModelName, skipValidation: !performRequestValidation);
例外をキャッチして呼び出しますbindingContext.ModelState.AddModelError。
問題は、DefaultModelBinderが非常に複雑であるため、そのような変更がモデル バインディング エコシステムの残りの部分とどのように相互作用する必要があるかを慎重に検討する必要がある場合があることです。