Handlebars.Net 使用本地文件路径
Handlebars.Net with local File path
我有一个配置值,代表一个文件夹,其中一些文件可供下载。该值是车把模板:
"D:\{{identifier1}}\{{identifier2}}\SomeFolder\{{version}}"
此值由我们的部署服务器根据环境设置。
问题是,当我 运行 模板通过时是这样的:
var template = Handlebars.Compile(_configuration.FilePathFormat);
return template(new
{
identifier1 = 123,
identifier2 = 456,
version = "latest"
});
我得到的结果是这样的:
R:{{identifier1}}{{identifier2}}\SomeFolder{{version}}
我的期望:
R:36\SomeFolder\latest
出于某种原因,它正在脱离车把,我不希望那样。我一直无法找到有关禁用转义字符的任何信息,并且没有多少斜杠可以正确呈现模板。
此外,如果我在斜杠和车把占位符之间放置一个 space,它会正确编译和呈现,但文件路径中会有一个 space。
我找到了 site that let me test handlebars.js,但它的行为与 handlebars.net
不同
更新:已在 Handlebars.net
中修复
Sice 1.9.3 版本,在我报告错误后立即发布,现在可以正常使用了。对于 Handlebars.Net,您必须将模板中的斜杠加倍以转义它们,与 Handlebars.js、
相同
var templateText = @"D:\{{identifier1}}\{{identifier2}}\SomeFolder\{{version}}";
var compiledTemplate = Handlebars.Compile(templateText);
var path = compiledTemplate(new
{
identifier1 = 123,
identifier2 = 456,
version = "latest"
});
原回答:
是的,似乎 Handlebars.net 对转义字符有一些奇怪的处理。
最简单的解决方法是只反转模板字符串中的斜杠。
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);
我有一个配置值,代表一个文件夹,其中一些文件可供下载。该值是车把模板:
"D:\{{identifier1}}\{{identifier2}}\SomeFolder\{{version}}"
此值由我们的部署服务器根据环境设置。
问题是,当我 运行 模板通过时是这样的:
var template = Handlebars.Compile(_configuration.FilePathFormat);
return template(new
{
identifier1 = 123,
identifier2 = 456,
version = "latest"
});
我得到的结果是这样的:
R:{{identifier1}}{{identifier2}}\SomeFolder{{version}}
我的期望:
R:36\SomeFolder\latest
出于某种原因,它正在脱离车把,我不希望那样。我一直无法找到有关禁用转义字符的任何信息,并且没有多少斜杠可以正确呈现模板。
此外,如果我在斜杠和车把占位符之间放置一个 space,它会正确编译和呈现,但文件路径中会有一个 space。
我找到了 site that let me test handlebars.js,但它的行为与 handlebars.net
不同更新:已在 Handlebars.net
中修复Sice 1.9.3 版本,在我报告错误后立即发布,现在可以正常使用了。对于 Handlebars.Net,您必须将模板中的斜杠加倍以转义它们,与 Handlebars.js、
相同var templateText = @"D:\{{identifier1}}\{{identifier2}}\SomeFolder\{{version}}";
var compiledTemplate = Handlebars.Compile(templateText);
var path = compiledTemplate(new
{
identifier1 = 123,
identifier2 = 456,
version = "latest"
});
原回答: 是的,似乎 Handlebars.net 对转义字符有一些奇怪的处理。
最简单的解决方法是只反转模板字符串中的斜杠。
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);