【发布时间】:2013-08-07 00:59:44
【问题描述】:
根据the documentation 视图分辨率,我想在我的应用程序中显示一个视图,但我得到的是 json 响应 而不是 html 视图如下:
ServiceStack 用于解析适当的 Markdown 模板以用于呈现 HTML 输出的解析顺序是:
- 如果 Web 服务指定了一个模板(通过自定义的 IHttpResult.TemplateName 响应) - 然后是一个具有该名称的视图。
- 与响应 DTO 同名的视图,首先在 /Views 中查找,然后在 /Views/Shared 中查找
- 与请求 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