我想生成由RAZOR一个静态的HTML页面,主要通过使用包括部分子页面。
- 我曾尝试T4以及和你寻找一种替代方案:看到这里和这里
- 这个回答说,这是可能的-但没有具体的例子
- 我已经安装了刀片发生器 ,因为我认为这是要走的路,但我不明白怎么产生这个静态的HTML。
最好将是一个完整的扩展,它的行为与T4的概念,但允许我使用剃刀语法和HTML格式 (格式的问题基本上是为什么我不使用T4的原因)。
我想生成由RAZOR一个静态的HTML页面,主要通过使用包括部分子页面。
最好将是一个完整的扩展,它的行为与T4的概念,但允许我使用剃刀语法和HTML格式 (格式的问题基本上是为什么我不使用T4的原因)。
如果你正在试图采取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/
剃刀发电机的当前版本具有与“MvcHelper”发电机使用时产生用于助手静态方法太“发电机”选项。
例如,在你的CSHTML文件的顶部(设置为当然RazorGenerator自定义工具Visual Studio的属性)添加这一行:
@* Generator: MvcHelper, GeneratePrettyNames : true *@
漂亮的名字选项不是绝对必要的,但是是我觉得应该是默认情况下,为了避免用下划线那些疯狂长的类名:-)
正如你可能已经知道,这种方法的主要好处是,你可以在单独的组件共享你的助手。 这就是为什么我首先使用剃刀发电机。
即使在同一个组件,你现在可以离开App_Code文件夹以外的代码。 当然,这是不是最好的做法(至少对于安全性)和Visual Studio设计迷糊。 它认为该方法仍然不是静态的,但它是不是和正常工作。
我原型我在同一个站点/组件的App_Code文件夹助理的速度,然后将它们复制到共享的组件时,他们进行测试。 我需要这个解决方案的原因是没有手工编码的的HtmlHelper每一块HTML,即与一起使用,以创建通用引导佣工该解决方案从@chrismilleruk。
我想以后我可能要在CSHTML佣工转换为速度的手工编码的HtmlHelper。 但要开始看之初有很大的发展速度递增,从复制我要自动化,那就完美了,并在相同的格式/编辑快速调试他们的能力和HTML粘贴代码块。