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