C# 解析html帮助程序
我正在使用从数据库动态编译razor视图。现在我正在使用剃须刀引擎3.7.3。我很少看到关于如何阅读html助手并编译它的帖子,但这是针对razor引擎的旧版本 我读过C# 解析html帮助程序,c#,razorengine,C#,Razorengine,我正在使用从数据库动态编译razor视图。现在我正在使用剃须刀引擎3.7.3。我很少看到关于如何阅读html助手并编译它的帖子,但这是针对razor引擎的旧版本 我读过ITemplateServiceConfiguration,但我也不能真正理解它是如何工作的 我的问题是,如何在数据库的Html内容中使用@Html(Html helper)、@Url(Url helper)和@section(如@section脚本,@section特色)成功运行compile()razorengine(v3.7
ITemplateServiceConfiguration
,但我也不能真正理解它是如何工作的
我的问题是,如何在数据库的Html内容中使用@Html(Html helper)、@Url(Url helper)和@section(如@section脚本,@section特色)成功运行compile()razorengine(v3.7.3)?
到目前为止我所做的事情。我试图实现另一篇文章中的代码。该代码适用于较旧版本的razor引擎。他建议我们创建自己的助手类:
public class RazorHtmlHelper
{
public IEncodedString Partial(string viewName)
{
ITemplate template = RazorEngine.Razor.Resolve(viewName);
ExecuteContext ec = new ExecuteContext();
RawString result = new RawString(template.Run(ec));
return result;
}
}
public class RazorUrlHelper
{
public string Encode(string url)
{
return System.Uri.EscapeUriString(url);
}
}
然后他建议创建我们自己的模板:
public class RazorTemplateBase<T> : TemplateBase<T>
{
private RazorUrlHelper _urlHelper = new RazorUrlHelper();
private RazorHtmlHelper _htmlHelper = new RazorHtmlHelper();
public RazorUrlHelper Url
{
get
{
return this._urlHelper;
}
}
public RazorHtmlHelper Html
{
get
{
return this._htmlHelper;
}
}
}
以上代码来自我不完全确定我的建议是否能直接解决您的问题。根据我的专业经验,尝试利用不推荐的类并不会产生积极的结果。我个人不会尝试直接从数据库渲染视图。如果我处在您的位置,利用MVC4的razor视图引擎,我将放弃您的方法,遵循以下步骤
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="System.Web.HtmlHelpers" />
</namespaces>
</pages>
</system.web.webPages.razor>
如果您以这种方式实现HTMLHelper,那么您将使用访问数据并将结构化数据库数据转换为可视HTML的逻辑来抽象JIT编译的代码(所有视图代码)。在上面的示例中,您将在运行时JIT编译视图的大部分逻辑,这在性能方面非常昂贵。MVC是以这样一种方式设计的,这样您就可以避免承担所有这些开销。如果您在预编译库中创建了功能强大的HTML帮助程序,则可以使视图代码变得非常小和简单 你能展示一下到目前为止你做了什么吗?好让我们能帮你更好。好的,我编辑了它,请审阅。可能是重复的
ITemplate template = RazorEngine.Razor.Resolve(viewName);
ExecuteContext ec = new ExecuteContext();
RawString result = new RawString(template.Run(ec));
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="System.Web.HtmlHelpers" />
</namespaces>
</pages>
</system.web.webPages.razor>