【问题标题】:Servicestack Razor Markdown View ResolutionServicestack Razor Markdown 查看分辨率
【发布时间】:2013-08-07 00:59:44
【问题描述】:

根据the documentation 视图分辨率,我想在我的应用程序中显示一个视图,但我得到的是 json 响应 而不是 html 视图如下:

ServiceStack 用于解析适当的 Markdown 模板以用于呈现 HTML 输出的解析顺序是:

  1. 如果 Web 服务指定了一个模板(通过自定义的 IHttpResult.TemplateName 响应) - 然后是一个具有该名称的视图。
  2. 与响应 DTO 同名的视图,首先在 /Views 中查找,然后在 /Views/Shared 中查找
  3. 与请求 DTO 同名的视图,首先在 /Views 中查找,然后在 /Views/Shared 中查找

这些是我的 DTO

 public class FacebookRequest{}
 public class FacebookResponse{}

这是我的路线配置

Routes.Add<FacebookRequest>("/User/facebook");

我的观点有以下代码:

@inherits ViewPage<MyProject.Services.Dto.FacebookResponse>

this is a facebook response

服务方式:

 [ClientCanSwapTemplates]
  public FacebookResponse Get(FacebookRequest userRequest)
  {
      return new FacebookResponse();
  }

据我了解,如果我有一个位于“views”目录中且具有相同 responseDTO 的视图,它应该将视图与来自服务的响应连接起来。

【问题讨论】:

  • 我没有清楚地了解您的问题,但razor.servicestack.net 项目将帮助您了解查看内容。请问你能指出你卡住的地方吗?
  • 您的视图名称是FacebookResponse.cshtml 还是FacebookResponse.md?它是否位于您的 /Views 或 /Views/Shared 目录中?您的问题没有明确说明。
  • @kunjee 嗨,我收到的是 json 响应而不是 html 视图
  • @marfarma 这些文件是 .cshtml 并且它们位于一个名为“views”的文件夹中,如果我得到一个与视图页相关联的 responseDTO,它应该自动拾取它,我必须做的是为我需要渲染的视图明确定义一个属性 [DefaultView("name of the view")],但我仍然想知道为什么我必须这样做。
  • SS 使用响应 DTO 类的确切名称并在文件系统上查找具有该确切名称的视图文件,除非您提供 DefaultView 属性。因此,如果您的视图(在您的示例中)不完全是 Views/FacebookResponse.cshtml,它将无法正常工作。使用inherits viewpage 语句并不能帮助SS 解析视图。它在特定位置寻找确切的文件名。我不是 100% 的,但我似乎记得这也是区分大小写的匹配。

标签: servicestack


【解决方案1】:

添加评论作为答案

SS 使用响应 DTO 类的确切名称并在文件系统上查找具有该确切名称的视图文件,除非您提供 DefaultView 属性。因此,如果您的视图(在您的示例中)不完全是 Views/FacebookResponse.cshtml,它将无法正常工作。使用继承 viewpage 语句并不能帮助 SS 解析视图。它在特定位置寻找确切的文件名。我对此不是 100% 的 - 但我似乎记得这也是区分大小写的匹配。

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    相关资源
    最近更新 更多