问题标签 [dotliquid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4508 浏览

c# - DotLiquid/Liquid access to dictionary

I am using DotLiquid template engine and trying access dictionary value in template. I have passed to template this drop:

In template i can't access to myKey value as {{ this.MyDictionary.myKey }} neither as {{ this.MyDictionary['myKey'] }}

0 投票
1 回答
1944 浏览

c# - 在 DotLiquid 中编写递归循环

我在DotLiquid中有这个循环:

每个subpage对象都有一个Pages属性与列表中的其他子页面(如第一个Page对象。

如何在这些子页面上编写递归迭代以创建完整的树?

0 投票
1 回答
1383 浏览

c# - 在 DotLiquid 的自己的标签中访问当前范围

当我在 DotLiquid 模板中循环一个 IEnumerable 时

我可以直接通过渲染成员,block.Structure但我不知道如何在我自己的标记类中访问此 Structure 对象RenderObject

0 投票
1 回答
302 浏览

c# - Mono 3.2 中的不一致行为与 Nancy Web 解决方案上的 DotLiquid 集合

在渲染液体模板时,我在特定情况下的应用程序中看到了一些奇怪的不一致结果。作为记录,我使用的是 Ubuntu 12.10、Mono 3.2.3 和最新版本的 Dotliquid (1.7)。我对 Dotliquid 做了一些小的覆盖,我将在下面概述它们的原因:

在 DotLiquidViewEngine 中,我插入了以下内容:

这种细微变化的意义在于,我不必输入 {{ model.myobject.property }} 而是可以使用 {{ myobject.property }}。

ResponseModel 对象是一个字典。开始偏离快乐路径的部分是我创建了一个继承自 DotLiquid.Drop 的对象,并且还实现了 IDictionary。这样,我可以通过 3 种不同的方式访问对象列表:

(我将在下面粘贴这个通用集合代码。)

我看到的问题是:我提供的代码在 Windows 环境中每次都有效。在运行最新版本 Mono 的 Linux 托管环境中,此代码有时有效,有时则无效。

我能找到的唯一模式是,一旦重新启动 Apache,无论在第一个页面请求上发生什么(无论列表是否正确呈现),这种行为都会在每个后续页面请求上发生,直到我再次重新启动 Apache。当它失败时,只有上面列出的前两种方法失败,第三种方法无论如何都有效。当我看到失败时,这是我看到的错误:

无论运行 Ubuntu 还是 CentOS,我在 Mono 中都会得到相同的不一致结果。我试过在调试与发布模式下执行代码。我什至尝试通过 Visual Studio 和 Xamarin 进行编译,看看是否有帮助。无论如何都是一样的结果。

唯一可能相关的其他信息是该解决方案在 Nancy 上运行,并且正在为 IoC 使用 StructureMap。这些都是 Nuget 的最新版本。

我相当坚持这一点,因此非常感谢任何见解。下面是实现 Drop 的通用集合中的代码:

我也尝试用这篇文章中提供的解决方案替换上面的类,结果相同:Dictionaries and DotLiquid

0 投票
1 回答
1461 浏览

c# - DotLiquid 没有解析我的模板

或者更好……有些事情我做的不对:s

反正这个很简单,我有这个课

我有这个模板:

{{Bedrooms}}Br in {{AreaName}} for only {{Price}}.

当我打电话ParseTemplate(somePath);时,我得到的结果是:Br in for only.

我究竟做错了什么?

注意未在 AdModel 中声明且在此处提及的属性在 Ad 中被声明为 Public,因此(理论上)从 AdModel 中访问它们应该没有问题

0 投票
1 回答
582 浏览

liquid - (点)液体:是否可以分配视图模型属性或调用视图模型方法?

这是一个关于 Liquid 安全性的问题,与 DotLiquid 库有关。

假设我的视图模型如下所示(伪代码):

...并且 MyViewModel 对象被传递给 Liquid 模板,其中 MyField 设置为可从模板内访问(因此模板可以读取其内容)。

  1. 可以将 MyField 分配给吗?即模板可以修改视图模型的内容吗?
  2. 可以调用 MyMethod() 吗?在渲染模板时,没有将“MyMethod”成员配置为可从模板访问。
  3. 如果“MyMethod”成员在渲染模板时被配置为可访问会发生什么?是否可以从 Liquid 模板调用方法?

我的假设是所有问题的答案都是否定的,但我想确定一下。

谢谢你。

0 投票
0 回答
681 浏览

c# - Dotliquid 扩展错误

我有一个非常基本的模板,即:

Body.tpl 要复杂得多,但基本上有两个部分:

C#代码是:

但是当我尝试解析模板时,我得到了错误:

但据我所知,“扩展”是模板中的第一个标签。

非常感谢任何帮助。

在此先感谢特里

0 投票
1 回答
857 浏览

c# - DotLiquid - 通过字符串索引器访问集合元素?

是否可以通过字符串引用而不是 DotLiquid 的索引偏移来访问集合项?

因此,在正常的 c# 中,如果我创建 MyCollection 类的实例,我可以访问这样的元素

我可以通过 DotLiquid 模板中的名称元素 col["Rows"] 访问吗?如果是这样,我该如何实施?

0 投票
1 回答
1136 浏览

c# - Handling Enums with DotLiquid templating engine

I'm currently working on a Web project for which I need to be able to send an email. I started using DotLiquid for the templating engine, but I found certain issues with it, the biggest being that it does not seem to be able to handle enums.

I tried to register the type as "Safe" like that Template.RegisterSafeType(typeof(Gender), new string[] { "Male", "Female" });, but it does not seem to work. At best, there is no longer any exception thrown, but the expected result is empty.

None of the above were able to return anything. I would be happy with a string or int representation of the enum, but there is nothing for now. Has anyone found a solution to this issue ?

I would like to avoid to "transform" the enum myself in the Drop object as this could be confusing later on.

Thank you.

0 投票
1 回答
193 浏览

c# - 如果 SafeTypes 上的阻止不起作用

我目前正在做一个项目,我们有某些需要在模板本身中使用枚举的地方。我创建了以下类以允许我在 DotLiquid 模板中访问我的枚举。

我的 IoC 容器调用了 Register 方法,并且“LiquidComponent”确实注册没有问题。但是,当我的模板达到以下点时,它总是落在 else 块中,我不明白为什么。没有错误,只是错误的结果。

我不知道解决这个问题。我虽然那时 {{ Model.PaymentMethod }} 会被解释为字符串,但事实并非如此。我删除了本地化,只拥有枚举本身,但行为是相同的(事实上枚举不再本地化)。在这种情况下,我想避免创建一个新块来测试相等性。我在网上搜索,但似乎没有答案。

我还在官方论坛上发布了这个问题:https ://groups.google.com/forum/#!topic/dotliquid/hU4hnOYjCnY