加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

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

发布时间:2020-12-14 18:35:21 所属栏目:资源 来源:网络整理
导读:我在没有MVC-Framework的情况下使用RazorEngine. 这意味着我没有用于创建模板的 HtmlHelper. 没关系,我不需要任何方法. 但我需要创建自己的方法,如BeginForm. 现在这些是用HtmlHelper.ViewContext.Writer.Write完成的,我没有. 是否有“开箱即用”的方式,或者
我在没有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().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读