点液体如何转义反斜杠

Tap*_*ppy 5 backslash html-escape-characters dotliquid

我在从具有合法反斜杠( ) 的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 的原样。任何输入/指针表示赞赏。

T.S*_*.S. 0

我参加聚会是不是太晚了?但这就是答案。首先 -Replace区分大小写。然后你需要使用冒号“:”作为参数。第三,我没有解释,但我怀疑需要通过转义来查找项目和在不使用转义的情况下替换项目。这是程序

string templateString = 
@"Nothing: '{{ k3 }}'
Replace with dash: '{{ k3|Replace:""\\"", ""-"" }}'
Replace with double slash: '{{ k3|Replace:""\\"", ""\\"" }}'";

Template.NamingConvention = new CSharpNamingConvention();
var t = Template.Parse(templateString);
string output = t.Render(Hash.FromDictionary(new Dictionary<string, object>() {{ "k3", "Domain\\user" } }));
Console.WriteLine(output);
Run Code Online (Sandbox Code Playgroud)

输出:

无: 'Domain\user'
替换为破折号: 'Domain-user'
替换为双斜杠: 'Domain\\user'