1

私はこのビューモデルを持っています

public class FooBarViewModel
{
    public string Foo { get; set; }

    [AllowHtml]
    public string Bar { get; set; }
}

html を含むHttpRequestValidationExceptionifをスローする代わりに、 にメッセージを追加したいと思います。どうすればそれができますか?.FooModelState

4

2 に答える 2

1

Foo属性を使用してプロパティを装飾することもでき[AllowHtml]ます。コントローラー内で、モデルの状態にカスタム エラーを追加できる HTML が含まれているかどうかを確認します。

于 2011-07-16T22:02:00.060 に答える
0

DefaultModelBinder例外は、 を呼び出した時点でスローされますValueProvider.GetValue

ModelState例外をキャッチしてエラーに変換するように動作を変更するには、 DefaultModelBinder.

1 つの可能性はオーバーライドBindModelすることであり、それが呼び出すポイントでGetValue:

ValueProviderResult valueProviderResult = bindingContext.UnvalidatedValueProvider.GetValue(bindingContext.ModelName, skipValidation: !performRequestValidation);

例外をキャッチして呼び出しますbindingContext.ModelState.AddModelError

問題は、DefaultModelBinderが非常に複雑であるため、そのような変更がモデル バインディング エコシステムの残りの部分とどのように相互作用する必要があるかを慎重に検討する必要がある場合があることです。

于 2012-10-27T13:51:11.723 に答える