gpt4 book ai didi

asp.net-web-api - RazorEngine WebApiTemplateBase @Url.Content()

转载 作者:行者123 更新时间:2023-12-02 21:12:54 24 4
gpt4 key购买 nike

我怎样才能得到@Url.Content()在我的_Layout.cshtml工作何时从 ASP.NET Web API 使用 RazorEngine?

RazorEngine (v.3.7.2) 仅处理 Razor 语法,而不处理其他辅助方法,如 @Html@Url 。这些可以通过扩展TemplateBase<>来添加并在配置中进行设置。

一些老问题中有代码示例:#26 , #29 ;在 MvcTemplateBase.cs 中一段未发布的、不完整的代码中;以及 Extending the Template Syntax 的文档中。

我的问题是我正在使用 ASP.NET Web API (v.1),它没有 HttpContext.Current (也不应该)。我想提供一个UrlHelper因为我想使用它的Content()方法,但需要使用 HttpRequestMessage 实例化这将不可用。

也许没有办法为我编译的布局获取 @Url 辅助方法。也许我需要一些其他方法来从虚拟路径获取绝对路径。不过,看来我仍然需要某种方法来检查请求。

最佳答案

实现此功能的一种方法是遵循Extending the Template Syntax设置的方向。并使用VirtualPathUtility.ToAbsolute()在辅助方法中。

using System.Web;
using RazorEngine.Templating;

namespace MyNamespace.Web
{
public abstract class WebApiTemplateBase<T> : TemplateBase<T>
{
protected WebApiTemplateBase()
{
Url = new UrlHelper();
}

public UrlHelper Url;
}

public class UrlHelper
{
public string Content(string content)
{
return VirtualPathUtility.ToAbsolute(content);
}
}
}

使用 TemplateBase<> 的此扩展设置 TemplateService 配置.

var config =
new RazorEngine.Configuration.TemplateServiceConfiguration
{
TemplateManager = new TemplateManager(),
BaseTemplateType = typeof(WebApiTemplateBase<>)
};

关于asp.net-web-api - RazorEngine WebApiTemplateBase @Url.Content(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32461041/

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