我使用的是 RazorEngine,没有 MVC 框架。
这意味着我没有用于创建模板的 HtmlHelper。
没关系,反正我不需要它的任何方法。
但我需要创建自己的方法,例如 BeginForm。
现在这些都是用 HtmlHelper.ViewContext.Writer.Write 完成的,而我没有。
是否有一种“开箱即用”的方法可以做到这一点,或者我必须在这里施展一些魔法?
The 剃刀引擎 http://razorengine.codeplex.com/旨在派生您自己的类型以在引擎本身中使用。
首先创建你自己的助手:
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()
and @Url.Encode()
在视图中可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)