【问题标题】:Spark view engine with array of namevaluepair具有名称值对数组的 Spark 视图引擎
【发布时间】:2013-01-31 09:53:25
【问题描述】:

我想将 Spark 视图引擎 (DirectUse) 用于电子邮件模板。所以我深入研究了 Spark 示例(EmailOrTextTemplating)。但我想要的是在 viewdata 中使用一组 NameValuePair(String name, object value) 对象作为字典。

然后在模板中这样使用:

<p>Name = ${#namevaluepairs["name"]}</p>

<if condition='namevaluepairs["date"].ToString("dd-MM-yyyy") == "31-01-2013"'>
  <p>text</p>
</if>

我不知道正确的语法是什么,也不知道如何将名称值对放入视图数据中。 任何人都可以帮助我朝着正确的方向前进吗?

Ps 我阅读了文档,但看到了使用 spark 引擎语法的不同方式。

【问题讨论】:

    标签: c# syntax template-engine spark-view-engine keyvaluepair


    【解决方案1】:

    ViewData 对象一个字典。

    在调用 Spark 之前将对象加载到 ViewData 中:

    var engine = new SparkViewEngine();
    var descriptor = new SparkViewDescriptor()
                .AddTemplate( templateFileName );
    ISparkEngineView view = engine.CreateInstance( descriptor ) as ISparkEngineView;
    
    view.ViewData["name"] = "foo";
    view.ViewData["date"] = DateTime.Now;
    
    view.RenderView( writer );
    

    然后在模板中像往常一样使用 ViewData:

    ${ViewData["name"]}
    
    <if condition='ViewData["date"]...'></if>
    

    【讨论】:

    • 谢谢,这是我需要的。但是是否也可以在没有视图数据的情况下直接使用名称值对?即 ${name} 这样模板使用起来更干净。
    • 您可以使用强类型模型,但这不是名称/值对。我相信您也可以使用动态,但不能完全确定。
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多