2017-04-19 4 views
3

이것은 자체 호스팅 프로젝트입니다. 콘텐츠로 항상 복사하도록 설정된 Views\Member.cshtml 파일이 있습니다. 다음을 실행하면 razorView에 대해 null이 반환됩니다. 나는 여기에 뭔가 빠져있는 것 같다. ServiceStack 렌더링 면도기가보기를 찾지 못함

var razorView = razor.GetViewPage("Member"); //e.g. /Views/Member.cshtml 
    var html = razor.RenderToHtml(razorView, em); 
    Console.WriteLine(html); 

는 또한 나는 이것을 시도하고 파일이 존재하지만 그것은 file not found을 반환 또한

var html = razor.RenderToHtml(AppDomain.CurrentDomain.BaseDirectory + 
"Views\\" + "Member.cshtml", em); 

, 서비스 게이트웨이가 렌더링 면도칼을 반환해야하는 방법은 무엇입니까?

Member.cshtml이 존재합니다 https://db.tt/xuOSAjEj31

razor : https://db.tt/qeApkAEZGH

AppHost.cs :

Plugins.Add(new RazorFormat() { 
     // ScanRootPath = AppDomain.CurrentDomain.BaseDirectory + "Views" 
     }); 

답변

2

나는 각 .cshtml을 변경 한 후 ServiceStackVS에 면도기 프로젝트와 ServiceStack 셀프 호스트로이 테스트를했습니다 복사 최신은 단지에 AppHost.Configure()을 변경 :

[Route("/views/hello/{Name}")] 
public class HelloView 
{ 
    public string Name { get; set; } 
} 

public class MyServices : Service 
{ 
    public object Any(Hello request) 
    { 
     return new HelloResponse { Result = "Hello, {0}!".Fmt(request.Name) }; 
    } 

    public object Any(HelloView request) 
    { 
     var razor = HostContext.GetPlugin<RazorFormat>(); 
     var helloView = razor.GetViewPage("Hello"); 
     var response = Any(request.ConvertTo<Hello>()); 
     var html = razor.RenderToHtml(helloView, response); 
     return html; 
    } 
} 

razor.GetViewPage("Hello")Views\Hello.cshtml에서보기를 반환하고 생성 된 HTML을 반환하는 경우 예상대로 작동합니다

public override void Configure(Container container) 
{ 
    this.Plugins.Add(new RazorFormat()); 
} 

그런 다음 아래 HelloView 서비스를 추가했다.

또한 서비스 게이트웨이가 렌더링 된 면도기를 반환하는 방법이 있습니까?

서비스 게이트웨이는 생성 된 HTML 뷰가 아닌 Typed Response DTO를 반환하는 서비스를 호출하는 데 사용됩니다. Razor Views에서 base.Gateway을 사용하여 Service Gateway에 액세스 할 수 있습니다.

+0

서비스 외부에서 razor.GetViewPage를 사용하고 있는데 리팩토링하여 문제인지 확인합니다. – lucuma

+0

내 프로젝트에서 응답을 테스트했지만 작동하지 않았습니다. 'helloView'는 항상 null입니다. 나는'razor.ScanRootPath'가 디버그 폴더로 설정되지 않았지만 중요한지 확실하지 않은 것으로 나타났습니다. – lucuma

+0

@lucuma는 프로젝트에 대해 몰라요.하지만 새로운 SelfHost + Razor 프로젝트에서 예상대로 작동합니다. – mythz