3

以 Direct Usage Sample 的形式使用 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); 
            } 
        } 
    } 
4

2 回答 2

4

我试图达到相同的结果,发现将视图添加到 SparkViewDescriptor 的顺序很重要。首先添加视图,最后添加母版页对我来说很好。

使用以下视图描述符,它将使用“viewPage1.spark”作为视图,使用“masterPage1.spark”作为母版页。

new SparkViewDescriptor().AddTemplate("viewPage1.spark").AddTemplate("viewPage.spark").AddTemplate("masterPage.spark").AddTemplate("masterPage1.spark") 

所以它将第一个作为视图,最后一个作为母版页。<use master=""/>当您以这种方式使用它时,它似乎也忽略了任何指令。我想当您在 MVC 场景中使用它时,有一些单独的代码可以读取主指令并为这样的视图创建适当的 SparkViewDescriptor。

于 2010-07-17T22:38:56.347 回答
0

对于我想要有标准页眉和页脚的特殊情况,我可以使用这样的文件包含:<use file="~/Layouts/Master" />.

于 2009-11-16T16:05:17.030 回答