【问题标题】:Generating CSS using parameterized templating使用参数化模板生成 CSS
【发布时间】:2014-10-15 10:59:55
【问题描述】:

我已经看过帖子:Efficient plain text template engine,但它没有回答我的问题。它的文档不仅仅是little lacking,而且我没有看到它做我想做的事情。

我想知道您是否可以遍历模板并使用函数填充值,该函数的参数来自模板中的属性。例如:

"The <comparison property='fruit' value='green'> and the <comparison property='bowl' value='big'>."

在遍历每个变量并将其传递给函数之后,

"The fruit is green and the bowl is big."

我正在尝试根据包含外观设置的 JSON 对象生成一个 css 页面。

编辑:我想知道是否有办法从 JsonConvert.DeserializeObject() 获取直接对象。 JObject 有很多我不需要的信息。

【问题讨论】:

  • 您是否在 Google 上搜索过更多文档? razorengine.codeplex.com/documentation。另见w3schools.com/aspnet/razor_intro.asp
  • 是的,但后来我看到链接说代码正在被移动到 GitHub 和一篇文章表明正在对版本 3 进行重大更改。也就是说,我可能没有做任何复杂的事情足够重要了,所以谢谢!我正在添加一个编辑,根据您的输入重点关注我的问题。

标签: c# asp.net json templates code-generation


【解决方案1】:

(我不确定这是否是您正在寻找的,但是)我想,您可以将我的previous answer(显示JObject.SelectToken 的使用)与正则表达式结合起来创建您自己的模板引擎。

string Parse(string json, string template)
{
    var jObj = JObject.Parse(json);
    return Regex.Replace(template, @"\{\{(.+?)\}\}", 
                         m => jObj.SelectToken(m.Groups[1].Value).ToString());
}

string json = @"{name:""John"" , addr:{state:""CA""}}";
string template = "dummy text. Hello {{name}} at {{addr.state}} dummy text.";

string result = Parse(json, template);

【讨论】:

  • 谢谢。我最终使用了 RazorEngine。看起来它毕竟效果最好。
猜你喜欢
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多