asp.net - 在 Web 表单应用程序中使用 Razor View 作为电子邮件模板

标签 asp.net webforms razor email-templates

我有一个需要发送电子邮件的 asp.net Web 表单应用程序。我喜欢 Razor 语法,因为您可以在 MVC 之外使用 Razor,所以我想我会尝试使用它。我发现您可以通过编程方式将模板字符串传递给 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 服务器等,只是 View 没有。

感谢任何帮助。

最佳答案

您需要获取文件的完整路径;相对路径最终将相对于错误的位置。

File.OpenText(Server.MapPath("~/Email/UserDetailsEmail.cshtml"))

关于asp.net - 在 Web 表单应用程序中使用 Razor View 作为电子邮件模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6031474/

相关文章:

c# - 如何在我的 ASP.NET 应用程序中长时间使用 Session

c# - 创建一个国际网站

asp.net - web.config 文件中的配置部分不能包含 CDATA 或文本元素错误

c# - 回发后如何保持 DropDownList1 的选定值?

asp.net-mvc - 将不同的模型传递给 RenderPartial()

c# - ASP.NET Core ViewLocationExpander 在其他程序集中找不到 View

c# - 如何在同一项目中的asp.net mvc Controller 中从asp.net web api获取数据

c# - 威胁已经被清除了。对于response.redirect。在以下代码中,当 session 为空时如何重定向

c# - 为什么在回发期间未设置 asp.net dropdownlist selectedvalue

c# - 在 Razor @Html.EditorFor 中使用文化设置日期格式