2011-07-20 13 views
3

私はFubuMVCを習得しようとしており、自分の入力モデルを検証することに固執しました。 私が達成したいのはpost-validate-redirectです。つまり、同じビューにリダイレクトし、モデルが無効な場合はエラーを表示します。私は自分のモデルに属性を使用しています。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(); 

答えて

3

FubuMVC.Validationパッケージは本当に我々はエッジケースのすべてのためにそれを作成していないとしてFubuValidationを使用する方法の一例に過ぎません。あなたがそれを使うことができるかどうかを知るために、あるいは独自のバリデーションの振る舞いを手渡すべきかどうかを知るために、どのように動作するのか少し説明しましょう。

ValidationBehaviorはIValidationFailureHandlerインターフェイスを使用して検証エラーを処理します。 FubuValidationから構築されたNotificationオブジェクトは、動作が発生するとIFubuRequestにプッシュされ、ハンドラが呼び出されます。

すべての の検証に失敗した場合、ValidationFailureHandlerクラスはデフォルトで配線されています。これはIValidationFailurePolicyを に委任し、特定のモデルタイプに使用する戦略を決定します(これについては、 のポリシーに関する記事を参照してください)。ここから

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

あなたは1)ApplyPolicy方法 を経由してカスタムポリシーを適用するか、2)述語を使用することができます。

検証拡張メソッドは、これらのポリシーを設定するためのマイクロ DSLを与える過負荷を持っていますIfModelメソッドを使用したベースの構成アプローチ。

述語ルート(たとえばx.Failures.IfModelIs())に行くと、FubuMVC.ValidationにFubuContinuationsを使用して別の動作 チェーンにリダイレクトまたは転送するように指示できます。 Rexは最近、この分野のガイダンス(http://rexflex.net/2011/07/fubumvc-fubucontinuation/)を探している場合、FubuContinuationsについて投稿しました。 IfModelIsは、私は方法の権利を理解していた場合、私のためにそれをカットするつもりはないように、このことができますし、私は十分に何かを説明していない場合は離れて気軽に

希望、
ジョシュ

+0

が見えます。 ApplyPolicyを使用しようとしましたが、使用方法がわかりませんでした。 – Henning

+0

これはうまくいったのですか?私の最新の落下はあなたがどんな状況にあっても十分対応できると思う。 – jmarnold

+0

実際、ええ、新しいものに感謝します。 Atmそれは完璧に動作します:D。あなたのデモプロジェクトを拡張したり、自分のデモプロジェクトを作成したりすることができますか? – Henning

関連する問題