.net – 在RazorEngine中使用语句(没有来自MVC的HtmlHelper)

.net – 在RazorEngine中使用语句(没有来自MVC的HtmlHelper),第1张

概述我在没有MVC-Framework的情况下使用RazorEngine. 这意味着我没有用于创建模板的 HtmlHelper. 没关系,我不需要任何方法. 但我需要创建自己的方法,如BeginForm. 现在这些是用HtmlHelper.ViewContext.Writer.Write完成的,我没有. 是否有“开箱即用”的方式,或者我必须在这里做一些魔术吗? RazorEngine设计用于派生您自己 我在没有MVC-Framework的情况下使用RazorEngine.
这意味着我没有用于创建模板的 HtmlHelper.

没关系,我不需要任何方法.
但我需要创建自己的方法,如BeginForm.

现在这些是用HTMLHelper.VIEwContext.Writer.Write完成的,我没有.
是否有“开箱即用”的方式,或者我必须在这里做一些魔术吗?

解决方法 RazorEngine设计用于派生您自己的类型以用于引擎本身.

首先创建自己的助手:

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

在解析之前设置TemplateServiceConfiguration:

Razor.SetTemplateService(new TemplateService(  new TemplateServiceConfiguration()  {    BaseTemplateType = typeof(RazorTemplateBase<>)  };));result = RazorEngine.Razor.Parse(templateText,model);

现在,RazorEngine在视图中提供了@ HTML.Partial()和@ Url.Encode().

总结

以上是内存溢出为你收集整理的.net – 在RazorEngine中使用语句(没有来自MVC的HtmlHelper)全部内容,希望文章能够帮你解决.net – 在RazorEngine中使用语句(没有来自MVC的HtmlHelper)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1138830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存