ServiceStack剃刀默认页面

说我有2页

  1. /NotADefault.cshtml

  2. /Views/Default.cshtml

问题1。

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

问题2。

我还有NotADefaultService.csDefaultService.cs 。 我在后面为每个页面提供了一个Service类。 但是,当调用页面A时, NotADefaultService.cs永远不会被调用。 调用页面B时只调用DefaultService.cs

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

结合Q1和Q2。

我如何能:

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

要么

选项2.在启动时指定/View/Default.schtml作为我的默认设置,可以命中服务类吗?

在ServiceStack中 :

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

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

查看页面无法直接调用,这是内容页面的角色, 只能直接调用,即在服务上下文之外(或重定向到服务)。

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

  • / stars / dead / cobain /调用/stars/dead/Cobain/default.cshtml内容页面
  • / TypedModelNoController调用/TypedModelNoController.cshtml内容页面

鉴于View Pages的示例包括:

  • / rockstars与/RockstarsService.cs上的/rockstars rockstars路由匹配,并且由于[DefaultView("Rockstars")]属性,使用/Rockstars.cshtml 查看页面

默认页面

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

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

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

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