#asp.net #webforms #razor #email-templates
#asp.net #веб-формы #razor #шаблоны электронной почты #электронная почта-шаблоны
Вопрос:
У меня есть asp.net Приложение Web Forms, которому необходимо отправлять электронные письма. Мне нравится синтаксис Razor, и поскольку вы можете использовать Razor вне MVC, я подумал, что попробую использовать это. Я видел, что вы можете программно передать строку шаблона в razor, но я бы хотел сохранить свои шаблоны razor в виде отдельных файлов .cshtml.
Есть ли у кого-нибудь простой, проверенный на идиотизм совет относительно того, как это сделать? Я пытался загрузить их из файла, подобного этому:
UserDetails userDetails = new UserDetails {Name = "Fred"};
string template = File.OpenText("Email/UserDetailsEmail.cshtml").ReadToEnd();
string messageText = Razor.Parse(template, userDetails);
Все безрезультатно. При обнаружении файла возникает исключение. Я использую razorengine dll.
У меня все остальное работает, smtp-сервер и т.д., только не представления.
Любая помощь приветствуется.
Ответ №1:
Вам нужно получить полный путь к файлу; относительные пути в конечном итоге будут относиться к неправильному местоположению.
Написать
File.OpenText(Server.MapPath("~/Email/UserDetailsEmail.cshtml"))
Ответ №2:
Я бы использовал инструмент MvcMailer, который вы можете настроить с помощью Nuget и который имеет строительные леса для создания представлений.
Это очень хорошо написанное приложение, и его можно легко добавить к вашему:
Комментарии:
1. Знаете ли вы, как вызвать razor view из проекта web forms. Когда я вызываю ‘PopulateBody(MailMessage, viewName: «UserDetails»);’ Я получаю исключение: «Значение не может быть нулевым. rnpпараметрическое имя: RouteData». Существуют ли какие-либо простые инструкции по настройке MvcMailer внутри приложения web forms?