为什么servicestack会返回默认的html视图而不是我的markdown?

时间:2012-08-03 18:28:31

标签: servicestack

我有一个在http://example.com/api.ashx运行的服务栈 我设置了一个响应过滤器强制特定类型的dto内容到html并将其templateName属性设置为“RulesView.md”。 但是我得到了发送给客户端的servicestack默认json报告视图而不是我的标记。我有一个带有RulesView.md文件的views文件夹。我正在使用版本3.7.9,如果这很重要。我需要配置什么吗?

2 个答案:

答案 0 :(得分:0)

如果它返回的默认json报告超过您的请求,则发现与现有的Markdown页面不匹配:

注意:TemplateName不应包含.md扩展名,请改为RulesView

来自:http://www.servicestack.net/docs/markdown/markdown-features

ServiceStack用于解析用于呈现HTML输出的相应Markdown模板的解析顺序是:

  1. 如果Web服务指定了一个模板(通过自定义的IHttpResult.TemplateName响应) - 那么具有该名称的视图。

  2. 与Response DTO同名的视图,首先在/ Views中查看/ Views / Shared

  3. 与请求DTO同名的视图,首先在/ Views中查看/ Views / Shared

答案 1 :(得分:0)

如果从处理程序返回HttpResult,则在写入响应流时,不会使用带有markdown的TemplateName属性。您必须将HttpResult.Response设置为IHttpResult(您不能使用HttpResult,因为它还实现了将响应属性写入http响应流的IStreamWriter)。这意味着在返回HttpResult时,您必须使用Response属性中的类名来命名您的降价页面。最后,看起来当servicestack编译视图时,它不会包含语法错误的文件。

就我而言,我有

@foreach p in products
-@p.Name

我需要的地方

@foreach p in Model.products{
- @p.Name
}