我想在我的应用程序中显示经过facebook身份验证后的视图,但我得到的是json响应而不是html视图,根据文档,视图分辨率如下:
ServiceStack用于解析用于呈现HTML输出的适当Markdown模板的解析顺序为:
- 如果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();
}
据我所知,如果我在"视图"目录中有一个具有相同响应DTO的视图,它应该将该视图与服务的响应连接起来。
添加注释作为答案
SS使用响应DTO类的确切名称,并在文件系统上查找具有该确切名称的视图文件,除非您提供DefaultView属性。因此,如果您的视图(在您的示例中)不是Views/FacebookResponse.cshtml,它将不起作用。使用inherits-viewpage语句并不能帮助SS解析视图。它在特定位置查找确切的文件名。我并不是100%相信这一点,但我似乎记得这也是一场区分大小写的比赛。