[英]Is there an example on using Razor to generate a static HTML page?
如果您正在尝试使用Razor视图并对其进行编译并生成HTML,那么您可以使用类似的东西。
public static string RenderViewToString(string viewPath, object model, ControllerContext context)
{
var viewEngineResult = ViewEngines.Engines.FindView(context, viewPath, null);
var view = viewEngineResult.View;
context.Controller.ViewData.Model = model;
string result = String.Empty;
using (var sw = new StringWriter())
{
var ctx = new ViewContext(context, view,
context.Controller.ViewData,
context.Controller.TempData,
sw);
view.Render(ctx, sw);
result = sw.ToString();
}
return result;
}
或者在ControllerContext之外http://razorengine.codeplex.com/
Razor Generator的当前版本具有“Generator”选项,当与“MvcHelper”发生器一起使用时,也会为助手生成静态方法。
例如,将此行添加到CSHTML文件的顶部(当然,自定义工具Visual Studio属性设置为RazorGenerator):
@* Generator: MvcHelper, GeneratePrettyNames : true *@
漂亮的名字选项并不是绝对必要的,但我觉得应该是默认的,以避免那些带有下划线的疯狂长类名:-)
您可能已经知道,此方法的主要好处是您可以在单独的程序集中共享助手。 这就是我首先使用Razor Generator的原因。
即使在同一个程序集中,您现在也可以将代码保留在App_Code文件夹之外。 然而,这不是最佳实践(至少对于安全性而言)并且Visual Studio设计者感到困惑。 它认为该方法仍然不是静态的,但它不是并且工作正常。
我在同一站点/程序集的App_Code文件夹中对我的助手进行原型设计以获得速度,然后在测试时将它们复制到共享组件。 我需要这个解决方案的原因是创建通用的Bootstrap助手,而无需在HtmlHelper中对每个HTML进行手工编码,即与@chrismilleruk的此解决方案一起使用。
我想以后我可能需要将CSHTML帮助器转换为手动编码的HtmlHelper以提高速度。 但是从一开始就看到开发速度有了很大的提升,从复制和粘贴我希望自动化的HTML代码块的能力,然后在相同的格式/编辑器中快速完善和调试它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.