我正在尝试学习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();
答案 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的信息。
希望这有帮助,如果我没有详细解释,请随时提出要求 乔希