Я использую Razor.Engine для генерации электронных писем в формате HTML на основе шаблонов. Я хотел использовать HttpUtility, чтобы протестировать проблему с кодировками символов, и обнаружил, что Razor пожаловался на то, что не нашел ссылки на библиотеку, получив «Имя HttpUtility не существует в текущем контексте».
Код, который я использую, довольно прост:
string content = fileSystem.File.ReadAllText(pathToTemplate);
service.AddTemplate(templateKey, content);
service.Compile(templateKey, typeof(TModel));
var result = service.Run(templateKey, typeof(TModel), model);
System.Web доступен для проекта, выполняющего этот код, но кажется, что Razor ищет в другом месте? Это что-то простое, чего я не вижу?
В шаблоне я так называю:
<p>Hi @(System.Web.HttpUtility.HtmlEncode(@Model.UserFirstName)) @(System.Web.HttpUtility.HtmlEncode(@Model.UserLastName)),</p>
Я уверен, что вы, возможно, думаете, что это приведет к двойному кодированию, но у нас была проблема, когда Razor выдавал специальный символ без кодировки, поэтому я хотел проверить, что это будет делать и не может ' заставить его работать.