我正在尝试学习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();发布于 2011-07-24 11:42:32
FubuMVC.Validation包实际上只是如何使用FubuValidation的一个例子,因为我们还没有为所有的边缘情况构建它。话虽如此,让我解释一下它是如何工作的,这样我们就可以看看你是否可以使用它,或者你是否应该手把手地处理自己的验证行为。
ValidationBehavior使用IValidationFailureHandler接口来“处理”验证失败。当行为触发时,从FubuValidation构建的通知对象被推入IFubuRequest,然后调用处理程序。
默认情况下,对于所有验证失败,ValidationFailureHandler类都是绑定的。这委托给IValidationFailurePolicy来确定用于给定模型类型的策略(请参阅我关于策略的帖子以了解其工作原理)。
验证扩展方法有一个重载,它为配置这些策略提供了一个微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/)。
希望这对你有所帮助,如果我解释得不够充分,你可以问我。
乔希
https://stackoverflow.com/questions/6759287
复制相似问题