Использование объекта Expando с RazorEngine выдает ошибку - PullRequest
1 голос
/ 12 октября 2011

Я получаю список параметров из поста и создаю IDictionaryObj, в котором я храню это.В режиме отладки я вижу все ключи / значения, которые я передаю, они отображаются как свойства этого объекта расширения.Однако, когда я передаю этот объект методу разбора RazorEngine, он жалуется, что ни одно из предоставленных свойств отсутствует.Что я здесь не так делаю?

        dynamic expando = new ExpandoObject();

        var templateModel = expando as IDictionary<String, object>;

        templateModel["To"] = email.To;
        templateModel["From"] = email.From;
        templateModel["Message"] = email.Body;

        var templateData = HttpUtility.ParseQueryString(extraParams);

        foreach (var property in templateData.AllKeys)
        {
            templateModel[property] = templateData[property];
        }

        var mailBody = Razor.Parse(template, templateModel.ToExpando());

В последней строке выдается следующая ошибка:

'System.Dynamic.ExpandoObject' не содержит определения для 'From'

Ответы [ 2 ]

0 голосов
/ 10 ноября 2015

Вы не показали шаблон переменной.

При использовании ExpandoObject в RazorEngine необходимо убедиться, что в вашем шаблоне нет @model, даже если @model указывает на ExpandoObject или вы получите это исключение.

Если у вас есть @model в вашем шаблоне, вам нужно удалить его.

0 голосов
/ 12 октября 2011

Предполагая, что ваш код подходит для .ToExpando(), вы, вероятно, скучаете по Linq:

using System.Linq;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...