2013-09-26 48 views
2

我使用Servicestack 3.9.59與Servicestack.Razor作爲獨立的控制檯程序。Servicestack錯誤建設查看頁面

我的請求/響應/服務看起來像:

namespace Info 
{ 
    [Route("/OverView")] 
    public class OverViewRequest : IReturn<OverViewResponse> 
    {} 
    public class OverViewResponse 
    { 
     public string Name { get; set; } 
    } 

    public class OverViewService : Service 
    { 
     public OverViewResponse Get(OverViewRequest request) 
     { 
      return new OverViewResponse() { Name = "test" }; 
     } 
    } 
} 

查看頁面的樣子:

@inherits ViewPage<OverViewResponse> 

@Model.Name 

隨着_layout頁:

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta charset="utf-8" /> 
<title></title> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<link rel="stylesheet" type="text/css" href="/static/css/bootstrap.min.css"> 
<link rel="stylesheet" type="text/css" href="/static/css/bootstrap-theme.min.css"> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script src="/static/js/bootstrap.min.js"></script> 
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> 
<!--[if lt IE 9]> 
    <script src="/static/js/html5shiv.js"></script> 
    <script src="/static/js/respond.min.js"></script> 
<![endif]--> 

</head> 
<body> 
    @RenderBody() 
</body> 
</html> 

而且我APPHOST配置因此:

namespace Info 
{ 
class AppHost : AppHostHttpListenerBase 
{ 
     public AppHost() : base("Server Info", typeof(AppHost).Assembly) { } 

     public override void Configure(Container container) 
     { 
      Plugins.Add(new RazorFormat()); 
      Config.DefaultRedirectPath = "/OverView"; 
      Config.DebugMode = true; 
     } 
     static void Main(string[] args) 
     { 
      var appHost = new AppHost(); 
      appHost.Init(); 
      appHost.Start("http://*:2001/"); 

      Thread.Sleep(Timeout.Infinite); 
     } 

} 
} 

我盡我所能,以匹配RazorRockstars 的例子然而,當我運行程序我得到的控制檯上的輸出如下:

at ServiceStack.Razor.Managers.RazorViewManager.TrackPage(IVirtualFile file) 
at ServiceStack.Common.Extensions.EnumerableExtensions.ForEach[ 
    T 
](IEnumerable`1 values, 
Action`1 action) 
at ServiceStack.Razor.RazorFormat.Init() 
at ServiceStack.Razor.RazorFormat.Register(IAppHost appHost) 

和來訪的瀏覽器中的頁面只顯示OverViewRequest的快照由ServiceStack頁面生成。

回答

1

我相信你還需要添加[DefaultView("OverView")]。這可以在上面您的服務或以上的單個方法添加上你的服務,以便例如:

[DefaultView("OverView")] 
public class OverViewService : Service 
{ 
    public OverViewResponse Get(OverViewRequest request) 
    { 
     return new OverViewResponse() { Name = "test" }; 
    } 
} 

或者:

public class OverViewService : Service 
{ 
    [DefaultView("OverView")] 
    public OverViewResponse Get(OverViewRequest request) 
    { 
     return new OverViewResponse() { Name = "test" }; 
    } 
} 

然後,你需要的OverView.cshtml文件添加到一個文件夾Views。請參閱此答案以獲取更多信息:ServiceStack razor default page

+0

我已經試過了,它不會改變結果。 這可能與_Layout.cshtml文件有關嗎?我是否正確地認爲它的位置應該在Views文件夾中? – Richy19

+0

是在視圖文件夾中有_Layout.cshtml文件是正確的 – CallumVass