【问题标题】:ServiceStack razor default pageServiceStack razor 默认页面
【发布时间】:2012-10-23 18:00:02
【问题描述】:

假设我有 2 页

  1. /NotADefault.cshtml

  2. /Views/Default.cshtml

问题 1。

现在我运行它,页面A 总是被隐式调用为启动默认页面,无论我如何命名它。
只有当我明确调用 localhost/View/Default 时,才会调用页面 B。如何将页面B(View 文件夹中的那个)设为我的默认页面?

问题 2。

我也有NotADefaultService.cs 和DefaultService.cs。我在每个页面的后面都给了一个服务类。但是,当页面 A 被调用时,NotADefaultService.cs 永远不会被调用。当页面B 被调用时,只有DefaultService.cs 被调用......

我的观察是,只有View 文件夹中的页面才能使其后端服务类正常工作。在View 文件夹之外它不起作用。

结合 Q1 和 Q2。

我该怎么做:

选项 1. 让后端服务类在“查看”文件夹外的 / root 下工作?

或

选项 2. 在启动时指定 /View/Default.schtml 作为我的默认值,在该处可以访问服务类?

【问题讨论】:

    标签: c# servicestack


    【解决方案1】:

    在ServiceStack:

    • /Views/ 文件夹中存在的 Razor 页面称为 查看页面
    • 存在于其他任何地方的 Razor 页面称为 内容页面

    它们之间的区别在于 View Pages 是 Razor 视图,用于提供 HTML 表示(也称为视图)用于服务,其工作方式与 View Pages 的工作方式大致相同用于 MVC 控制器。

    View Pages不能直接调用,这就是Content Pages的作用,只能直接调用,即在上下文之外服务(或从服务重定向到)。

    在Razor Rockstars 中,内容页面的示例包括:

    而查看页面的示例包括:

    默认页面

    对于内容页面,default.cshtml 是文件夹的索引页面。因此,要为根/ 路径设置默认页面,请创建一个/default.cshtml 页面。这方面的一个例子是Reusability 演示中使用的/default.cshtml 主页。

    如果您想使用视图页面作为主页,您可以通过添加 AppHost 配置来设置默认重定向:

    SetConfig(new HostConfig { 
       DefaultRedirectPath = "/home"
    });
    

    这将调用与/home 路由匹配的服务,该路由将根据Razor Rockstars 页面中的规则使用最合适的视图页面。

    【讨论】:

    • 使用 DefaultRedirectPath 时,有什么办法可以不显示 /home 在地址中?
    • 不,它只会重定向。您需要一个实现在自定义 RawHttpHandler 中处理默认请求或一个包罗万象的方法来为默认路由提供动态请求。有关可用的自定义挂钩的详细信息,请参阅Order of Operations。
    • 这是否意味着ServiceStack.Razor没有遵循MVC模式(一定程度上View Pages除外)?
    • 除此之外,您的服务(控制器)返回 /Views 目录中 Razor 页面(视图)的响应(模型)。外部页面(即内容页面)被直接调用,不通过服务。这基本上就是这个答案的全部内容。
    • 隐藏/home
    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2021-10-02
    • 2012-08-17
    • 1970-01-01
    • 2019-10-13
    • 2018-11-14
    • 1970-01-01
    相关资源
    最近更新 更多