면도기 템플릿에 변수가 괄호 안에 들어 있으면 (예 : "@ Model.B)"코드에서) 면도기 엔진이 "<"앞에 있고 공백이나 텍스트로 구분되어 있으면 해당 변수를 컴파일하고 바꾸지 못합니다. 이것은 의도 된 행동입니까? 변수가 괄호 안에 싸여 있지 않으면 템플릿은 잘 분석됩니다. 면도기가 무겁게 <에 의존RazorEngine : 작은 기호 ("<") 뒤에 나타나는 변수를 구문 분석하지 않습니다.
[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; }
}
오류 메시지가 있습니까? – ps2goat
예기치 않은 결과가 발생하더라도 오류없이 컴파일되고 실행됩니다. – Sidawy