ServiceStack Render Razor 无法找到视图

ServiceStack Render Razor Fails to Find View

这是一个自托管项目。有一个 Views\Member.cshtml 文件设置为始终作为内容复制。下面当运行returns为null时为razorView。我似乎在这里遗漏了一些东西。

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

此外,我已经尝试过这个并且它 returns file not found 尽管文件在那里:

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

此外,有没有办法让服务网关 return 渲染的剃须刀?

Member.cshtml 存在:https://db.tt/xuOSAjEj31

razor: https://db.tt/qeApkAEZGH

AppHost.cs:

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

在将每个 .cshtml 更改为 Copy if 之后,我在 ServiceStackVS 中使用 ServiceStack Self Host with Razor 项目对此进行了测试较新的 ,将 AppHost.Configure() 更改为:

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

然后添加下面的HelloView服务:

[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") return 是 Views\Hello.cshtml 中的视图,return 是生成的 html。

Also, is there a way to have a service gateway return the rendered razor?

服务网关用于调用 return 键入响应 DTO 的服务,而不是生成 html 视图。您可以使用 base.Gateway 访问 Razor Views 中的服务网关。