.net – 在RazorEngine中使用语句(没有来自MVC的HtmlHelper)
发布时间:2020-12-14 18:35:21 所属栏目:资源 来源:网络整理
导读:我在没有MVC-Framework的情况下使用RazorEngine. 这意味着我没有用于创建模板的 HtmlHelper. 没关系,我不需要任何方法. 但我需要创建自己的方法,如BeginForm. 现在这些是用HtmlHelper.ViewContext.Writer.Write完成的,我没有. 是否有“开箱即用”的方式,或者
我在没有MVC-Framework的情况下使用RazorEngine.
这意味着我没有用于创建模板的 HtmlHelper. 没关系,我不需要任何方法. 现在这些是用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(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |