3

FubuMVC を学習しようとしていますが、入力モデルの検証に行き詰まっています。私が達成したいのは、検証後のリダイレクトです。つまり、同じビューにリダイレクトして、モデルが無効な場合にエラーを表示します。モデルで属性を使用しています。

また、独自のエラー メッセージ、つまりローカリゼーションを指定するにはどうすればよいですか?

nuget の Fubu の最新パッケージを使用しています。

私のレジストリは次のようになります。

IncludeDiagnostics(true);
Applies.ToThisAssembly();

Actions.IncludeClassesSuffixedWithController();

Routes
    .HomeIs<HomeController>(x => x.Index())
    .IgnoreControllerNamesEntirely()
    .IgnoreMethodsNamed("Index")
    .IgnoreMethodsNamed("Query")
    .IgnoreMethodsNamed("Command")
    .IgnoreNamespaceText("Features")
    .IgnoreMethodSuffix("Html")
    .RootAtAssemblyNamespace()
    .ConstrainToHttpMethod(x => x.Method.Name.EndsWith("Command"), "POST")
    .ConstrainToHttpMethod(x => x.Method.Name.EndsWith("Query"), "GET");

this.UseSpark();
this.Validation();

HtmlConvention<SampleHtmlConventions>();
Views.TryToAttachWithDefaultConventions();
4

1 に答える 1

3

FubuMVC.Validation パッケージは実際には FubuValidation の使用方法の一例にすぎません。そうは言っても、それがどのように機能するかについて少し説明して、それを使用できるかどうか、または独自の検証動作をハンドロールする必要があるかどうかを確認します.

ValidationBehavior は、IValidationFailureHandler インターフェイスを使用して、検証の失敗を「処理」します。FubuValidation から構築された Notification オブジェクトは、動作が発生したときに IFubuRequest に押し込まれ、ハンドラーが呼び出されます。

ValidationFailureHandler クラスは、すべての検証エラーに対してデフォルトで関連付けられています。これは、IValidationFailurePolicy に委任して、特定のモデル タイプに使用する戦略を決定します (これがどのように機能するかについては、ポリシーに関する私の投稿を参照してください)。

Validation 拡張メソッドには、これらのポリシーを構成するためのマイクロ DSL を提供するオーバーロードがあります。

this.Validation(x => { 
    x.Failures.... 
}); 

ここから、1) ApplyPolicy メソッドを介してカスタム ポリシーを適用するか、2) IfModel メソッドを介して述語ベースの構成アプローチを使用できます。

述語ルート (x.Failures.IfModelIs() など) を使用する場合、FubuMVC.Validation に FubuContinuations を使用してリダイレクトまたは別の動作チェーンに転送するように指示できます。Rex は最近、FubuContinuations について投稿しました (http://rexflex.net/2011/07/fubumvc-fubucontinuation/)。

これがお役に立てば幸いです。説明不足があれば遠慮なくお尋ねください、
ジョシュ

于 2011-07-24T03:42:31.827 に答える