标签: dotliquid

使用 JSON.net 的 Dotliquid JSON 转换

我对执行 JSON 转换感兴趣并研究使用 dotliquid。

为了避免输入 JSON 的 POCO 只是为了能够将其作为变量发送,我想发送反序列化的 JSON。根据我的理解,我们无法向 render 方法发送动态,并且 JObject 或 JArray 无法按预期工作。我尝试反序列化为 Dictionary<string, object>,但无法处理嵌套的 JSON 结构。

液体

[
{%- for p in data.names -%}
{
"name" : {{ p.name }}
} {%- unless forloop.Last == true -%},{% endunless %}         
{%- endfor -%}
]
Run Code Online (Sandbox Code Playgroud)

C# 代码

Template template = Template.Parse(File.ReadAllText("Maps/account.liquid"));             
var json = JsonConvert.DeserializeObject<Dictionary<string, object>>(
    @"{ ""names"":[{""name"": ""John""},{""name"":""Doe""}]  }");              

var jsonHash = Hash.FromAnonymousObject(new { Data = json});
Run Code Online (Sandbox Code Playgroud)

输出

[
  {
    "name" : 
  },         
  {
    "name" :  
  } …
Run Code Online (Sandbox Code Playgroud)

json json.net dotliquid

7
推荐指数
1
解决办法
2261
查看次数

点液体如何转义反斜杠

我在从具有合法反斜杠( ) 的azure web api 发送数据时遇到麻烦\。数据字段user id具有以下模式: Domain\UserId 我想将其按原样存储在数据库中。但点液体不处理它。我尝试使用 escape、escape_once 和 Replace

{{ body.requestor | escape_once }}
{{ body.requestor | escape }}
{{ body.requestor | replace "\", "\\"}}
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用。我无法要求我的 Web api 的调用者传递带有user id两个反斜杠的 - \\。我必须更改我的 Web api 以接受用户 ID 的原样。任何输入/指针表示赞赏。

backslash html-escape-characters dotliquid

5
推荐指数
1
解决办法
2663
查看次数

DotLiquid/Liquid访问字典

我正在使用DotLiquid模板引擎并尝试在模板中访问字典值.我已经传递给模板这个drop:

public class SomeDrop : Drop
{
   public Dictionary<string, object> MyDictionary {get; set;}
}

var someDropInstance = SomeDrop 
{
   MyDictionary = new Dictionary<string, object> {{"myKey", 1}}
}

Template.NamingConvention = new CSharpNamingConvention();

var preparedTemplate = Template.Parse(template);
var templateOutput = preparedTemplate.Render(Hash.FromAnonymousObject(new { @this = someDropInstance }));
Run Code Online (Sandbox Code Playgroud)

在模板我不能访问的myKey值 {{ this.MyDictionary.myKey }} 既不 {{ this.MyDictionary['myKey'] }}

c# liquid dotliquid

4
推荐指数
1
解决办法
3319
查看次数

shopify我需要检查当前页面是否是收集页面而不是单个产品页面

我正在尝试检查我当前页面是否是某个集合中的集合页面而不是单个产品页面.

我的意思是,例如,如果有人去鞋子的收集页面然后我可以检查使用collection.handle =='鞋子',但如果我从该页面选择一个产品,那么它仍然会给我真实但我希望我的条件成真如果是收藏页面.谢谢你的帮助!

liquid-layout liquid shopify dotliquid

4
推荐指数
3
解决办法
4487
查看次数

为什么 DotLiquid 或 Azure 逻辑应用会自动转换我的日期字段?

我有一个包含日期字段的液体模板,我根本没有使用任何过滤器,但它正在从2020-04-11T22:02:11ZUTC 转换为4/11/2020 10:02:11 PM. 这是 DotLiquid 或 Azure 逻辑应用的预期行为吗?我怎样才能阻止它这样做?

liquid dotliquid azure-logic-apps

4
推荐指数
1
解决办法
939
查看次数

DotLiquid - 字典&lt;string,string&gt; 作为参数

假设我有以下模板:

嗨{{名字}}!欢迎回到{{博客}}。上次登录日期:{{ date }}。

允许用户输入模板和占位符/变量,因此我无法知道占位符会是什么样子。

我正在考虑创建这样的东西:

public string Render(string text, Dictionary<string,string> placeholders)
{
    Template template = Template.Parse(text);
    return template.Render(Hash.FromSomething(placeholders));
}
Run Code Online (Sandbox Code Playgroud)

有一种名为 FromDictionary 的方法,它接受字典,但我不太明白它是如何工作的。另一种选择是 FromAnonymousObject,但我不知道如何将 Dictionary 转换为匿名对象以适应目的。

任何想法将不胜感激!

.net c# dictionary template-engine dotliquid

3
推荐指数
1
解决办法
2340
查看次数

Liquid 中的逗号分隔列表

我正在 for 循环中提取元数据值,并且需要将它们显示在逗号分隔的列表中。

代码(为了可读性添加了空格):

{% if asset.metadata['field01'] %}{{asset.metadata['field01']}}{% endif %}
{% if asset.metadata['field02'] %}{{asset.metadata['field02']}}{% endif %}
{% if asset.metadata['field03'] %}{{asset.metadata['field03']}}{% endif %}
Run Code Online (Sandbox Code Playgroud)

目前这显示为:Field 01 ValueField 02 ValueField 03 Value,但我希望它显示为Field 01 Value, Field 02 Value, Field 03 Value

在每个 if 语句后手动键入,,会在最后一个值后留下一个逗号。

shopify dotliquid

3
推荐指数
1
解决办法
6391
查看次数

使用.Net Core安装DotLiquid时出现NU1108错误

我有ASP.NET Core 2.2我试图安装dotliquid使用的NuGet

Install-Package DotLiquid -Version 2.0.298

但出现错误

在此处输入图片说明

DotLiquid是否支持.NET Core 2.2?

nuget dotliquid asp.net-core-mvc asp.net-core

3
推荐指数
1
解决办法
169
查看次数

DotLiquid - 检查字符串"null或empty"

我在我的ASP.NET 4.0 Webforms应用程序中使用DotLiquid作为一些电子邮件模板,并且我试图排除我的一个电子邮件模板的某个部分,如果数据对象中的给定字符串我绑定到模板为空或空.

检查NULL非常有效:

{% if MyString != null %}

Some fancy label: {{ MyString }}
{% endif %}";
Run Code Online (Sandbox Code Playgroud)

但是,无论我试图在此测试中包含字符串到目前为止都失败了:

{% if MyString != null or MyString == empty %}

{% if MyString != null or MyString == '' %}
Run Code Online (Sandbox Code Playgroud)

如何检查"如果此字符串为空或空"?

c# asp.net dotliquid

2
推荐指数
1
解决办法
4325
查看次数

Angularjs Light版

我在许多项目中使用angular,特别是在ASP.NET MVC中,但我不喜欢angular-

  • 路由器(也是ui-router,这确实不是什么问题,因为它只是一个插件) - web-apps概念杀死所有ASP.NET功能
  • 服务和工厂 - 所有这些都可以在通用控制器内完成.(这可能听起来很棘手)
  • 常量和值 - 如果您使用requirejs或其他AMD,我认为这不是真正需要的

我喜欢的角度只是指令,当我做大嵌套指令时,我使用相同的控制器foreach,所以没有$scope交互(较少的观察者)

.controller('BaseGridCtrl', function(){
   //instead of 
   //$scope.value = 123;

   var ctrl = this;
   //this  is for Table-base-directive
   ctrl.value = 123;
   //this  is for Table-head-directive
   ctrl.value2 = 123;
});
.directive('table-base', function(){
    return {
        template: '<div>{{bgc.value}}</div>',
        controller: 'BaseGridCtrl',
        controllerAs: 'bgc'
    }
});
.directive('table-head', function(){
    return {
        template: '<div>{{bgc.value2}}</div>',
        controller: 'BaseGridCtrl',
        controllerAs: 'bgc'
    }
});
.directive('table-foot', function(){
    return {
        template: '<div>{{bgc.value3}}</div>',
        controllerAs: 'bgc',
        controller: function(){
           var ctrl = this;
           ctrl.value3 = …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc angularjs dotliquid reactjs

2
推荐指数
1
解决办法
685
查看次数

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

使用DotLiquid库,这是关于Liquid安全性的问题。

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

class MyViewModel
    public string MyField
    public string MyMethod()
Run Code Online (Sandbox Code Playgroud)

...,然后将MyViewModel对象传递给Liquid模板,其中将MyField设置为可从模板内部访问(以便模板可以读取其内容)。

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

我的假设是答案不是所有问题,但我想确定。

谢谢。

liquid dotliquid

1
推荐指数
1
解决办法
439
查看次数