gpt4 book ai didi

c# - RazorEngine:不解析出现在小于号 ("<"之后的变量)

转载 作者:行者123 更新时间:2023-11-30 12:59:59 26 4
gpt4 key购买 nike

当 razor 模板有一个包含在括号中的变量时(例如下面代码中的“(@Model.B)”),如果该变量前面有“<”和以空格或文字分隔。这是有意的行为吗?如果变量没有包含在括号中,那么模板就可以很好地解析。

[Test]
public void TestWeirdLangleBracketError()
{
var template = "(@Model.B)";
var model = new Model { B = Guid.NewGuid().ToString() };
var templateService =
new TemplateService(new TemplateServiceConfiguration { EncodedStringFactory = new RawStringFactory() });

//It is replaced here
//Result of Try1: "(f9e0f220-0df8-4942-9d84-e403c622af96)"
templateService.Compile(template, typeof(Model), "Try1");
Assert.True(templateService.Run("Try1", model, null).Contains(model.B));
//But not here
//Result of Try2: " < (@Model.B)"
templateService.Compile(" < " + template, typeof(Model), "Try2");
Assert.False(templateService.Run("Try2", model, null).Contains(model.B));
}

public class Model
{
public string B { get; set; }
}

最佳答案

Razor 严重依赖 < > 标志来查找将用作 html 的标签。

要解决您的问题,您可以使用 <

的 xml 替换
&lt; (@Model.B) 

实际代码在答案查找中被替换为小于为实际替换文本编码的 xml 符号

或者这个

@("<") (@Model)

问题出在 <Model.B 定义上。

关于c# - RazorEngine:不解析出现在小于号 ("<"之后的变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23229748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com