Могу ли я использовать представление Razor ASP.Net MVC для создания хорошо отформатированного тела HTML в качестве входных данных для электронного письма, отправляемого с сервера ?

Используйте настоящего профилировщика, такого как dotTrace.

21
задан Justin 10 March 2011 в 22:17
поделиться

1 ответ

Основываясь на ответе Райана, я сделал метод расширения:

public static string RenderViewToString(this Controller source, string viewName)
{
  var viewEngineResult = ViewEngines.Engines.FindView(source.ControllerContext, viewName, null);
  using (StringWriter output = new StringWriter())
  {
    viewEngineResult.View.Render(new ViewContext(source.ControllerContext, viewEngineResult.View, source.ViewData, source.TempData, output), output);
    viewEngineResult.ViewEngine.ReleaseView(source.ControllerContext, viewEngineResult.View);
    return output.ToString();
  }
}

Для вызова изнутри действия контроллера (пример использования):

  [AllowAnonymous]
  public class ErrorController : Controller
  {
    // GET: Error
    public ActionResult Index(System.Net.HttpStatusCode id)
    {
      Exception ex = null; // how do i get the exception that was thrown?
      if (!Debugger.IsAttached)
        Code.Email.Send(ConfigurationManager.AppSettings["BugReportEmailAddress"], 
          $"Bug Report: AgentPortal: {ex?.Message}", 
          this.RenderViewToString("BugReport"));
      Response.StatusCode = (int)id;
      return View();
    }
  }
0
ответ дан 29 November 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: