使用Spark时,可以使用主布局 直接使用样本?我尝试在我的布局中使用我的主布局 与调用布局相同的文件夹,我也尝试添加 主布局作为代码中SparkViewDescriptor的模板 下面?
public class DefaultMessageBuilder : MessageBuilder
{
private readonly ISparkViewEngine _engine;
public DefaultMessageBuilder()
{
var settings = new SparkSettings()
.SetDebug(true)
.SetPageBaseType(typeof(TemplateBase))
.AddNamespace("System.Collections.Generic");
var templates = new VirtualPathProviderViewFolder("~/Templates");
_engine = new SparkViewEngine(settings) { ViewFolder = templates };
}
public override void Transform(string templateName, object data, TextWriter output)
{
var descriptor = new SparkViewDescriptor()
.AddTemplate("Master.spark")
.AddTemplate(templateName + ".spark");
var view = (TemplateBase)_engine.CreateInstance(descriptor);
try
{
view.ViewData = new ViewDataDictionary(data);
view.RenderView(output);
}
finally
{
_engine.ReleaseInstance(view);
}
}
}
答案 0 :(得分:4)
我试图获得相同的结果,并发现将视图添加到SparkViewDescriptor的顺序很重要。首先添加视图和最后一个主页对我来说很好。
使用以下视图描述符,它将使用“viewPage1.spark”作为视图,使用“masterPage1.spark”作为母版页。
new SparkViewDescriptor().AddTemplate("viewPage1.spark").AddTemplate("viewPage.spark").AddTemplate("masterPage.spark").AddTemplate("masterPage1.spark")
因此,第一个作为视图,最后一个作为母版页。当你以这种方式使用它时,似乎也忽略了任何<use master=""/>
指令。我想有一些单独的代码可以读取master指令,并在MVC场景中使用它时为这样的视图创建一个合适的SparkViewDescriptor。
答案 1 :(得分:0)
对于我想要标准页眉和页脚的特殊情况,我可以使用这样的文件包含:<use file="~/Layouts/Master" />
。