gpt4 book ai didi

ServiceStack Render Razor 无法找到 View

转载 作者:行者123 更新时间:2023-12-02 01:14:11 25 4
gpt4 key购买 nike

这是一个自托管项目。有一个 Views\Member.cshtml 文件设置为始终作为内容复制。以下运行时为 razorView 返回 null。我似乎在这里遗漏了什么。

    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);

另外,有没有办法让服务网关返回呈现的 Razor ?

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

Razor :https://db.tt/qeApkAEZGH

AppHost.cs:

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

最佳答案

我在 ServiceStackVS 中使用 ServiceStack Self Host with Razor 项目对此进行了测试将每个 .cshtml 更改为 Copy if newer 后,将 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") 返回 Views\Hello.cshtml 中的 View ,并返回生成的 html。

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

服务网关用于调用返回类型化响应 DTO 的服务,而不是生成的 html View 。您可以使用 base.Gateway 访问 Razor Views 中的服务网关。

关于ServiceStack Render Razor 无法找到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43507743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com