.NET Razor引擎 - 实现布局

16

我正在使用以下代码片段启用我的解决方案中的Razor模板(不在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视图?


3
我感谢你的编辑,但是它与MVC3 '没有任何关系'。我进行了回滚,因为这个原因,不过其他的编辑(除了标签之外)也被回滚了... - Ropstah
2
@Ropstah: 我现在明白了(没有关注链接)。你应该在问题中以某种方式指定(即“我正在ASP.NET MVC3之外使用Razor模板引擎”并链接到“在ASP.NET MVC3之外使用Razor模板引擎”),以便向其他人清楚表明(大多数人会认为它是在ASP.NET MVC3中)。请保留代码格式;目前不够清晰,分散了问题的注意力。 - casperOne
2
@Ropstah:我刚刚去做了。现在应该清晰明了。 - casperOne
2
请注意,任何在MVC之外的Razor文件都不包含那些帮助函数。特别是MVC3为RazorEngine创建了这些函数。您可以相对容易地通过将布局模板作为基本模板属性的一部分添加到http://razor-engine.com来添加自己的函数。 - Buildstarted
1
@casperOne:你真是个明星!:). @BuildStarted:我知道我需要自己创建一些东西。问题是我不知道如何从模板中“提取”这些方法调用并将它们转换为命名部分或其他什么?引擎有多个“主机”或“包装器”,我发布的链接在我的情况下有效,所以我正在使用那个... razor-engine.com上的那个是否不同? - Ropstah
显示剩余3条评论
1个回答

6

我目前正在开发一个非常类似的项目。它是基于Nancy的前端模板框架。我扩展了Phil Haack的Nancy's Razor实现。我已经成功地实现了部分视图、模板助手和布局。

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

这个项目叫做Appia。看一下样本视图

这里是我的baseView实现baseView实现,这里是view引擎代码。它借鉴了很多MVC Razor实现,并且还具有一些Nancy特定的东西,但应该不难弄清楚正在发生什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接