【问题标题】:.NET Razor engine - Implementing layouts.NET Razor 引擎 - 实现布局
【发布时间】:2011-08-21 16:11:48
【问题描述】:

我正在使用以下 sn-p 到 enable Razor templating in my solution(在 ASP.NET MVC3 之外)。是否可以轻松实现布局?

背景信息:

我在这一点上(模板编译成compiledTemplateAssembly):

var template = (RazorTemplateBase<TModel>) compiledTemplateAssembly.
    CreateInstance("RazorSpace." + entry.TemplateName + "Template");
template.Model = model;
template.Execute();
var output = template.Buffer.ToString();
template.Buffer.Clear();
return output;

我可以想象在我的 RazorTemplateBase 类上有一个 Layout 属性。但是之后?我知道Html.Partial 是一个辅助函数,我可以实现它来解析模板。但是如何解析这些方法调用 renderBody()renderSection() 以接受其他 Razor 视图?

【问题讨论】:

  • @casperOne:我很欣赏编辑,但这与 MVC3“无关”。因为这个我回滚了,但是其他编辑(除了标签)也被回滚了......
  • @Ropstah:我现在看到了(没有点击链接)。您应该以某种方式在问题中指定这一点(即“我在 ASP.NET MVC3 之外使用 Razor 模板引擎”与“在 ASP.NET MVC3 之外使用 Razor 模板引擎”链接)以使其他人清楚(大多数将假定它在 ASP.NET MVC3 中。请保留代码格式;目前它不干净并且有损于问题。
  • @Ropstah:我只是继续做了。现在应该是晴天了。
  • 了解 mvc 之外的任何 razor 都不包含那些辅助函数。 MVC3 专门为 RazorEngine 创建了这些。通过将布局模板添加为基本模板的属性的一部分,您可以使用razor-engine.com 轻松添加自己的模板。
  • @casperOne:你是明星! :)。 @BuildStarted:我知道我需要自己创造一些东西。问题是我不明白如何从模板中“获取”这些方法调用并将它们转换为命名部分或..?引擎有多个“主机”或“包装器”,我发布的链接在我的情况下有效,所以我正在使用那个...... razor-engine.com 上的那个不同吗?

标签: .net razor


【解决方案1】:

我目前正在做一些非常相似的事情。它是一个基于 Nancy 的前端模板框架。我扩展了 Phil Haack 的 Nancy's Razor 实现。我已经设法让 Partials、Templated Helpers 和 Layouts 工作了。

为了呈现布局,我有一个 Layout 属性,在布局内我有一个内容占位符“{{content}}”。因此,当我渲染视图时,如果设置了 Layout 属性,我会渲染布局,然后替换内容占位符。

该项目名为Appia。看看sample views

这是我的baseView implementationbaseView 实现,这是view engine code。它从 MVC Razor 实现中借用了很多东西,也有一些特定于 Nancy 的东西,但应该不难弄清楚发生了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2012-04-20
    • 2013-05-05
    相关资源
    最近更新 更多