.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(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
