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 中的服务网关。
这是一个自托管项目。有一个 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 中的服务网关。