是否有使用剃刀生成静态HTML页面的例子吗?(Is there an example on usin

2019-06-28 05:55发布

我想生成由RAZOR一个静态的HTML页面,主要通过使用包括部分子页面。

  1. 我曾尝试T4以及和你寻找一种替代方案:看到这里和这里
  2. 这个回答说,这是可能的-但没有具体的例子
  3. 我已经安装了刀片发生器 ,因为我认为这是要走的路,但我不明白怎么产生这个静态的HTML。

最好将是一个完整的扩展,它的行为与T4的概念,但允许我使用剃刀语法和HTML格式 (格式的问题基本上是为什么我不使用T4的原因)。

Answer 1:

如果你正在试图采取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/



Answer 2:

剃刀发电机的当前版本具有与“MvcHelper”发电机使用时产生用于助手静态方法太“发电机”选项。

例如,在你的CSHTML文件的顶部(设置为当然RazorGenerator自定义工具Visual Studio的属性)添加这一行:

@* Generator: MvcHelper, GeneratePrettyNames : true *@

漂亮的名字选项不是绝对必要的,但是是我觉得应该是默认情况下,为了避免用下划线那些疯狂长的类名:-)

正如你可能已经知道,这种方法的主要好处是,你可以在单独的组件共享你的助手。 这就是为什么我首先使用剃刀发电机。

即使在同一个组件,你现在可以离开App_Code文件夹以外的代码。 当然,这是不是最好的做法(至少对于安全性)和Visual Studio设计迷糊。 它认为该方法仍然不是静态的,但它是不是和正常工作。

我原型我在同一个站点/组件的App_Code文件夹助理的速度,然后将它们复制到共享的组件时,他们进行测试。 我需要这个解决方案的原因是没有手工编码的的HtmlHelper每一块HTML,即与一起使用,以创建通用引导佣工该解决方案从@chrismilleruk。

我想以后我可能要在CSHTML佣工转换为速度的手工编码的HtmlHelper。 但要开始看之初有很大的发展速度递增,从复制我要自动化,那就完美了,并在相同的格式/编辑快速调试他们的能力和HTML粘贴代码块。



文章来源: Is there an example on using Razor to generate a static HTML page?