2011-07-20 94 views
3

我正試圖學習FubuMVC並且已經陷入了驗證我的輸入模型的困境。 我想完成的是後驗證重定向。也就是說,如果模型無效,重定向到相同視圖並顯示錯誤。我在我的模型上使用屬性。如何設置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構建的通知對象被推入IFubuRequest,然後處理程序被調用。

對於所有 驗證失敗,ValidationFailureHandler類默認連線。這會將IalidationFailurePolicy委託給 確定用於給定模型類型的策略(請參閱我在 政策中的帖子,以瞭解其工作原理的解釋)。

的驗證擴展方法有一個重載這給微 DSL配置這些策略:

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

從這裏通過ApplyPolicy方法 你可以1)應用定製策略或2)使用謂詞通過IfModel方法實現基於配置的方法。

如果您使用謂詞路徑(例如x.Failures.IfModelIs()),則可以告訴FubuMVC.Validation使用FubuContinuations來重定向或轉移到另一個行爲 鏈。 Rex最近發佈了關於FubuContinuations的信息,如果你正在尋找這方面的一些指導(http://rexflex.net/2011/07/fubumvc-fubucontinuation/)。

希望這有助於和隨時問路程,如果我沒有解釋任何東西不夠,
喬希

+0

貌似IfModelIs是不會削減對我來說,如果我理解正確的方法。試圖使用ApplyPolicy,但不確定如何使用它。 – Henning

+0

你搞定了這個結果嗎?我認爲我的最新下降足以應付您的任何情況。 – jmarnold

+0

其實是的,非常感謝新東西。 Atm它完美地工作:D。我會看看我是否可以擴展您的演示項目或創建自己的演示項目。 – Henning