ServerStack显示我的请求/响应的快照,而不是相应的视图页面

时间:2013-08-02 18:46:15

标签: servicestack

以下是我的解决方案的结构(为简洁起见,采用严格简化的格式):

Project.API
    TestRequest.cs
    TestResponse.cs
    ITestService.cs

Project.Web
    /App_Start
        AppHost.cs
    /Services
        TestService.cs
    /Views
        Test.cshtml
    _Layout.cshtml
    Web.config

其中:

public interface ITestService
{
    TestResponse Get(TestRequest request);
}

public class TestService : Service, ITestService
{
    public TestResponse Get(TestRequest request)
    {
        return new TestResponse() 
        { 
            // ... set response properties ...
        };
    }
}

如果我用TestService装饰[DefaultView("Test")],那么一切正常,即导航到网址localhost/test会产生由Test.cshtml呈现的预期输出。

但是,如果我从类中删除[DefaultView("Test")]属性或将其移至Get()方法,我会获得请求/响应的快照,而不是视图的输出。

当在另一个项目中定义DTO时,ServiceStack似乎无法根据响应DTO查找视图。或者我错过了什么?

2 个答案:

答案 0 :(得分:1)

我的不好,我误解了http://razor.servicestack.net/#unified-stack

中的说明
  

... ServiceStack的视图选择基于响应的名称   或返回请求模型(DTO)。例如。如果您的服务返回   RockstarsResponse然后我们首先寻找一个同名的视图   Request DTO名为Rockstars.cshtml,后跟Response DTO   名为RockstarsResponse.cshtml(在所有注册的视图引擎中)   扩展)。

我认为Razor Rockstars示例中的请求DTO被称为RockstarsRequest,但它只是Rockstars,所以只要将我的请求DTO从TestRequest重命名为普通Test事情立即开始起作用。

答案 1 :(得分:0)

没有。我不认为servicestack基于DTO找到视图。至少你需要提供默认视图。这是一个可以更好地理解它的项目。

Razor Rockstars

基本上,servicestack是API框架,而不是Web开发框架。 Viewengine只是一个插件,如果我们需要一个视图而不是元数据来解释API或做某事,它可能很有用。

如果您想创建单页面应用程序,甚至视图支持也很有用。

如果需要进一步的详细信息,请告诉我。