首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有本地文件路径的Handlebars.Net

具有本地文件路径的Handlebars.Net
EN

Stack Overflow用户
提问于 2018-05-01 17:32:24
回答 1查看 1.3K关注 0票数 1

我有一个配置值,表示一个文件夹,其中有一些文件可供下载。这个值是一个车把模板:

代码语言:javascript
复制
"D:\{{identifier1}}\{{identifier2}}\SomeFolder\{{version}}"

此值由我们的部署服务器为每个环境设置。

问题是,当我像这样运行模板时:

代码语言:javascript
复制
var template = Handlebars.Compile(_configuration.FilePathFormat);

        return template(new
        {
            identifier1 = 123,
            identifier2 = 456,
            version = "latest"
        });

我得到的结果是:

代码语言:javascript
复制
R:{{identifier1}}{{identifier2}}\SomeFolder{{version}}

我所期望的:

代码语言:javascript
复制
R:\123\456\SomeFolder\latest

因为某种原因,它逃过了车把,我不想那样。我无法找到任何关于禁用转义字符的内容,而且没有多少斜杠可以正确地呈现模板。

另外,如果在斜杠和车把占位符之间放置一个空格,它将正确编译和呈现,但是文件路径中有一个空格。

我找到了一个允许我测试handlebars.js的站点,但它的行为与handlebars.net不同

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-01 17:42:55

更新: Handlebars.net中的修正

Sice版本1.9.3,在我报告了bug之后发布,现在运行正常。必须加倍模板中的斜杠才能将它们转义到Handlebars.Net中,就像对Handlebars.js一样,

代码语言:javascript
复制
var templateText = @"D:\\{{identifier1}}\\{{identifier2}}\\SomeFolder\\{{version}}";
var compiledTemplate = Handlebars.Compile(templateText);

var path = compiledTemplate(new
{
    identifier1 = 123,
    identifier2 = 456,
    version = "latest"
});

原始答案:是的,似乎Handlebars.net对转义字符有一些奇怪的处理。

最简单的解决方法是只反转模板字符串中的斜杠。

代码语言:javascript
复制
var templateText = @"D:/{{identifier1}}/{{identifier2}}/SomeFolder/{{version}}";
var compiledTemplate = Handlebars.Compile(templateText);

var pathWithInvertedSlashes = compiledTemplate(new
{
    identifier1 = 123,
    identifier2 = 456,
    version = "latest"
});
// Inverted slashes normally work fine on Windows, but if you want to
// 'fix' them you can always do
var canonicalPath = Path.GetFullPath(pathWithInvertedSlashes);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50121053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档