怎样把一个Razor视图为一个字符串?(How do you convert a Razor vie

2019-08-17 12:39发布

我想用我的Razor视图为某种模板发送电子邮件的,所以我想“拯救”我的模板在视图中,它读入控制器作为一个字符串,做一些必要的更换,然后将其发送。

我有解决方案,它的工作原理:我的模板被托管的地方作为一个HTML页面,但我想,以放入我的应用程序(即在我看来)。 我不知道如何读一个视图在我的控制器的字符串。

Answer 1:

我用的是以下内容。 把它放在你的基地控制器上,如果你有一个,这样你可以访问它的所有控制器。

public static string RenderPartialToString(Controller controller, string viewName, object model)
{
    controller.ViewData.Model = model;

    using (StringWriter sw = new StringWriter())
    {
        ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
        ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
        viewResult.View.Render(viewContext, sw);

        return sw.GetStringBuilder().ToString();
    }
}


Answer 2:

看看在RazorEngine库,这不正是你想要的东西。 我之前已经使用了电子邮件模板,和它的伟大工程。

你可以这样做:

// Read in your template from anywhere (database, file system, etc.)
var bodyTemplate = GetEmailBodyTemplate();

// Substitute variables using Razor
var model = new { Name = "John Doe", OtherVar = "Hello!" };
var emailBody = Razor.Parse(bodytemplate, model);

// Send email
SendEmail(address, emailBody);


文章来源: How do you convert a Razor view to a string?