gpt4 book ai didi

asp.net-mvc - 我可以使用 ASP.Net MVC Razor View 生成格式良好的 HTML 正文作为从服务器发送的电子邮件的输入吗?

转载 作者:行者123 更新时间:2023-12-03 11:48:00 25 4
gpt4 key购买 nike

我想利用 Razor View 的模型绑定(bind)/渲染功能为我从 ASP.NET MVC 应用程序发送的电子邮件生成 HTML 正文内容。

有没有办法将 View 呈现为字符串,而不是将其作为 GET 请求的 ActionResult 返回?

为了说明我正在寻找可以执行以下操作的东西......

    public ActionResult SendEmail(int id)
{
EmailDetailsViewModel emailDetails = EmailDetailsViewModel().CreateEmailDetails(id);

// THIS IS WHERE I NEED HELP...
// I want to pass my ViewModel (emailDetails) to my View (EmailBodyRazorView) but instead of Rending that to the Response stream I want to capture the output and pass it to an email client.
string htmlEmailBody = View("EmailBodyRazorView", emailDetails).ToString();

// Once I have the htmlEmail body I'm good to go. I've got a utilityt that will send the email for me.
MyEmailUtility.SmtpSendEmail("stevejobs@apple.com", "Email Subject", htmlEmailBody);

// Redirect another Action that will return a page to the user confirming the email was sent.
return RedirectToAction("ConfirmationEmailWasSent");
}

最佳答案

如果您只需要将 View 呈现为字符串,请尝试以下操作:

public string ToHtml(string viewToRender, ViewDataDictionary viewData, ControllerContext controllerContext)
{
var result = ViewEngines.Engines.FindView(controllerContext, viewToRender, null);

StringWriter output;
using (output = new StringWriter())
{
var viewContext = new ViewContext(controllerContext, result.View, viewData, controllerContext.Controller.TempData, output);
result.View.Render(viewContext, output);
result.ViewEngine.ReleaseView(controllerContext, result.View);
}

return output.ToString();
}

您需要从 Controller 操作中传入 View 名称以及 ViewData 和 ControllerContext。

关于asp.net-mvc - 我可以使用 ASP.Net MVC Razor View 生成格式良好的 HTML 正文作为从服务器发送的电子邮件的输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5266586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com