Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 发生异常时的ServiceStack视图/模板控件?_Templates_View_Exception Handling_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,Templates,View,Exception Handling,servicestack" /> servicestack,Templates,View,Exception Handling,servicestack" />

Templates 发生异常时的ServiceStack视图/模板控件?

Templates 发生异常时的ServiceStack视图/模板控件?,templates,view,exception-handling,servicestack,Templates,View,Exception Handling,servicestack,我添加了一些razor视图,并使用请求过滤器检查浏览器版本,并在桌面视图和移动视图之间切换。但是当异常发生时,尤其是验证异常,框架似乎会立即返回,并且从未接触过任何自定义代码。我尝试了请求/响应过滤器、服务异常处理程序,但没有一个得到执行。它似乎也忽略了URL查询字符串中指定的视图/模板 是否有方法在异常期间设置视图/模板?谢谢第一个问题是您如何处理验证异常 执行此类任务的最常见过程是使用fluentValidation,响应可以同时返回多个验证的消息,所有验证都是针对DTO的,您需要实现一个A

我添加了一些razor视图,并使用请求过滤器检查浏览器版本,并在桌面视图和移动视图之间切换。但是当异常发生时,尤其是验证异常,框架似乎会立即返回,并且从未接触过任何自定义代码。我尝试了请求/响应过滤器、服务异常处理程序,但没有一个得到执行。它似乎也忽略了URL查询字符串中指定的视图/模板


是否有方法在异常期间设置视图/模板?谢谢

第一个问题是您如何处理验证异常

执行此类任务的最常见过程是使用fluentValidation,响应可以同时返回多个验证的消息,所有验证都是针对DTO的,您需要实现一个AbstractValidator,您需要做的第一件事是注册属于您的应用程序的验证器,如下所示:

Plugins.Add(new ValidationFeature());
container.RegisterValidators(typeof(CredentialsAuthValidator).Assembly);
在这种情况下,验证用户名和密码不应为空,请看以下示例:

public class CredentialsAuthValidator : AbstractValidator<ServiceStack.ServiceInterface.Auth.Auth>
    {
        public CredentialsAuthValidator()
        {
            RuleSet(ApplyTo.Post, () =>
                {
                    RuleFor(x => x.UserName).NotNull().WithMessage("Username Required").When(x => x.provider == "Credentials");
                    RuleFor(x => x.Password).NotNull().WithMessage("Password Required").When(x => x.provider == "Credentials");
                }
                );
        }
    }

感谢Pedro的帮助,特别是ServiceStack的mythz。现在我想我开始明白我的问题了

ServiceStack首先是一个服务框架,Razor只是相同结果的另一个视图。但我对客户端的完整解决方案有点犹豫,并一直退回到熟悉的领域,寻找某种代码隐藏特性。这似乎是我很多挣扎的根源

经过更多的研究,这就是我目前得出的结论

  • 当然,服务的ServiceStack
  • Razor视图为每个主要功能构建基本布局和主页
  • 从模型中构建一个json脚本标记以保存初始数据,如SS的HTML报告中所示
  • Jquery和Eldarion ajax用于所有后续页内处理
  • javascript模板的手柄
  • 用于验证的Verifyjs
到目前为止,前景看好。页面的大小要小得多,运行起来非常平滑,大部分都是纯json


仍在进行中,欢迎所有建议

ViewSwitch在我改为使用请求过滤器时起作用。获得了正确的布局和所有引用等。尽管它们必须共享同一个错误页面,但其中没有太多格式。

感谢您的帮助。我想我找到了问题的根源。我很快会写一篇总结。再次感谢。仍然无法确定异常期间的视图切换。但我还是选择了一个在两个视图中都适用的错误页面,结果发现我有点过于乐观了。除非采用单页方法,否则,一旦离开当前页面,就很难跟踪状态。桌面浏览器和Jquery mobile之间更难协调。保留大部分内容,但将客户端模板仅限于本地操作。您是否考虑过客户端站点中的servicestak for rest services+Razor(出于某些安全原因)+angularJS,这很有魅力!继续用SS,你不会后悔的!谢谢我会调查的。在我最初5分钟尝试其他客户端框架的过程中,我有点害怕所有客户端模型、绑定和intellisenseyeah的缺乏。这是我第一次尝试在客户端看到mv*模式,但!你习惯了它,双重绑定是无痛的,因为intellisense你有resharper吗?
 GlobalHtmlErrorHttpHandler = new RazorHandler("/views/error"),
 CustomHttpHandlers =
                            {
                                {HttpStatusCode.NotFound, new RazorHandler("/views/notfound")},
                                {HttpStatusCode.Unauthorized, new RazorHandler("/views/login")},
                                {HttpStatusCode.Forbidden, new RazorHandler("/views/forbidden")},
                            }