#c# #templates #razor #postal
#c# #шаблоны #бритва #почтовый
Вопрос:
Я пытаюсь использовать Postal для отправки электронных писем из службы (не в ASP.NET проект). Я продолжаю получать исключения со следующим сообщением:
error CS0103: The name 'model' does not exist in the current context
Я следую руководству из Postal wiki: https://github.com/andrewdavey/postal/wiki/Postal-in-non-web-scenario
Мой шаблон выглядит следующим образом:
@model Namespace1.AlertEmailViewModel
From: support@example.com
To: @Model.FirstName @Model.LastName <@Model.Email>
Subject: Alert! @Model.ShortDescription
(Рассматриваемый класс модели действительно существует.)
Любая помощь будет признательна. Спасибо!
Комментарии:
1. Используете ли вы текущие версии библиотек mvc / razor?
2. @Marc Gravell Я использовал NuGet для захвата Postal, поэтому я бы предположил, что да, если пакет RazorEngine NuGet обновлен.
3. тем не менее, стоит проверить. В конечном счете, добавление приведения в верхней части может быть таким же простым:
var typedModel = (ModelType) Model;
4. @Marc Gravel RazorEngine находится на уровне 2.1.4039.23635. Есть ли что-то новее?
Ответ №1:
Поскольку вы используете Postal в не веб-сценарии, под капотом он использует наш проект RazorEngine. В настоящее время это означает, что он использует версию версии v2.1, которая в настоящее время размещена на NuGet.
@model
Синтаксис изначально не поддерживается в версии v2.1, но предстоящий выпуск версии v3 включает эту поддержку, а также другие приятные вещи, такие как макеты, потокобезопасность и т. Д. (https://github.com/Antaris/RazorEngine )
Ответ №2:
В прошлом у меня была эта проблема для проектов, которые были созданы с использованием более ранней версии MVC.
Чтобы устранить это, если я правильно помню, добавьте это в свой файл App.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Комментарии:
1. Здесь нет web.config; это не ASP.NET проект.
2. Ну, вы используете механизм шаблонов Razor, что означает, что вы ссылаетесь на сборку System.Web.Mvc. Поместите его в свой App.config, если вы не участвуете в веб-проекте..