Я следовал этому руководству, чтобы использовать RazorEngine для создания электронных писем в формате HTML. (без ASP.NET MVC). Это работало нормально, когда я использовал либо строго типизированное представление, либо анонимный объект в качестве модели:
Layout.cshtml
@model dynamic
// html contents...
Фрагмент C#
var template = Encoding.UTF8.GetString(Properties.Resources.ContractList);
var model = new
{
ContractList = list
};
var templateService = new TemplateService();
var html = templateService.Parse(template, model, null, null);
Затем я дал ему имя кеша, как рекомендовано в третья часть руководства:
templateService.Parse(template, model, null, nameof(Properties.Resources.ContractList));
Он отлично работал со строго типизированным объектом, но с анонимным объектом я начал получать это сообщение со второго запуска:
Недопустимый токен для олицетворения — его нельзя дублировать
Как я могу решить эту проблему и по-прежнему использовать анонимный объект для модели?
Я видел решения (здесь, здесь), которые предлагают преобразовать анонимный объект в ExpandoObject
, но я бы хотел чтобы избежать этого, если это возможно.