如何设置FubuMVC验证

时间:2011-07-20 08:50:43

标签: validation fubumvc

我正在尝试学习FubuMVC,并且一直停留在验证我的输入模型上。 我想要完成的是post-validate-redirect。也就是说,如果模型无效,则重定向到同一视图并显示错误。我在我的模型上使用属性。

另外,我如何指定自己的错误信息,即本地化?

我正在使用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();

1 个答案:

答案 0 :(得分:3)

FubuMVC.Validation包实际上只是一个如何使用FubuValidation的示例,因为我们还没有为所有边缘情况构建它。话虽如此,让我解释一下它是如何工作的,这样我们就可以看看你是否可以使用它,或者你是否应该只处理你自己的验证行为。

ValidationBehavior使用IValidationFailureHandler接口来“处理”验证失败。当行为触发时,从FubuValidation构建的Notification对象被推入IFubuRequest,然后调用处理程序。

ValidationFailureHandler类默认为所有人连接 验证失败。这将委托给IValidationFailurePolicy 确定用于给定模型类型的策略(请参阅我的帖子 解释这是如何工作的政策)。

验证扩展方法有一个重载,它给出了一个微观 dsl用于配置这些策略:

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

从这里您可以1)通过ApplyPolicy方法应用自定义策略 或者2)通过IfModel方法使用基于谓词的配置方法。

如果你去谓词路线(例如,x.Failures.IfModelIs()),你可以告诉FubuMVC.Validation使用FubuContinuations重定向或转移到另一个行为 链。如果您正在寻找该领域的一些指导(http://rexflex.net/2011/07/fubumvc-fubucontinuation/),Rex最近发布了有关FubuContinuations的信息。

希望这有帮助,如果我没有详细解释,请随时提出要求 乔希