我有一个在http://example.com/api.ashx运行的 servicestack 我设置了一个响应过滤器,将特定类型的 dto 内容强制为 html,并将其 templateName 属性设置为“RulesView.md”。但是我将 servicestack 默认 json 报告视图发送给客户端,而不是我的标记。我有一个带有 RulesView.md 文件的 views 文件夹。如果这很重要,我正在使用版本 3.7.9。有什么我需要配置的吗?
2 回答
如果它返回默认的 json 报告而不是您的请求,则发现与现有 Markdown 页面不匹配:
注意: TemplateName 不应包含扩展名,请改为.md
尝试。RulesView
来自:http ://www.servicestack.net/docs/markdown/markdown-features
ServiceStack 用于解析用于呈现 HTML 输出的相应 Markdown 模板的解析顺序是:
如果 Web 服务指定了一个模板(通过自定义的 IHttpResult.TemplateName 响应) - 然后是一个具有该名称的视图。
与响应 DTO 同名的视图,首先在 /Views 中查找,然后在 /Views/Shared 中查找
与请求 DTO 同名的视图,首先在 /Views 中查找,然后在 /Views/Shared 中查找
如果您从处理程序返回 HttpResult,则在写入响应流时,服务堆栈将不会使用带有 markdown 的 TemplateName 属性。您必须将 HttpResult.Response 设置为 IHttpResult(您不能使用 HttpResult,因为它还实现了将 Response 属性写入 http 响应流的 IStreamWriter)。这意味着在返回 HttpResult 时,您必须使用 Response 属性中的类名来命名您的降价页面。最后,当 servicestack 编译视图时,它看起来不会包含有语法错误的文件。
就我而言,我有
@foreach p in products
-@p.Name
我需要的地方
@foreach p in Model.products{
- @p.Name
}