c# - ASP.NET MVC Razor : How to render a Razor Partial View's HTML inside the controller action

标签 c# asp.net-mvc razor

如何在 ASP.NET View 引擎上生成给定局部 View 的 HTML is known .

但如果此功能用于 Razor 部分 View ,则它不起作用,因为异常(exception)情况表明部分 View 不是从“UserControl”派生的。

如何修复渲染以支持 Razor 局部 View ?

我需要这个,因为我从这个部分 View 生成电子邮件......

更新:

失败的代码(@mcl):

public string RenderPartialToString(string controlName, object viewData)
    {
        ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() };
        viewPage.Url = this.GetUrlHelper();

        string fullControlName = "~/Views/Email/" + controlName + ".ascx";

        viewPage.ViewData = new ViewDataDictionary(viewData);
        viewPage.Controls.Add(viewPage.LoadControl(fullControlName));

        StringBuilder sb = new StringBuilder();
        using (StringWriter sw = new StringWriter(sb))
        {
            using (HtmlTextWriter tw = new HtmlTextWriter(sw))
            {
                viewPage.RenderControl(tw);
            }
        }
        return sb.ToString();
    }

最佳答案

@Html.Partial("nameOfPartial", Model)

更新

protected string RenderPartialViewToString(string viewName, object model)
{
    if (string.IsNullOrEmpty(viewName))
        viewName = ControllerContext.RouteData.GetRequiredString("action");

    ViewData.Model = model;

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

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

关于c# - ASP.NET MVC Razor : How to render a Razor Partial View's HTML inside the controller action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4344533/

相关文章:

c# - 呈现工作流程的控制

c# - 如何使用 MVC C# Controller 在 JSON 服务侧分页中包含总计数

c# - 在 code/"refresh"请求中设置 ASP.net executionTimeout

c# - 使用未分配的局部变量 "strb"StringBuilder

asp.net-mvc - 需要接触数据库的模型验证的推荐方法

c# - 如何在asp.net core razor pages中实现分页

javascript - 在 ASP.Net Release模式下提供内容时,Chrome 呈现不同?

javascript - 是否可以为每个选项卡生成唯一 ID?

html - 对奇数 div 应用不同的样式

c# - 如何用 c# 变量填充 javascript 变量?