asp.net-mvc - 将部分 View 渲染为字符串 MVC4

标签 asp.net-mvc asp.net-mvc-4 asp.net-mvc-partialview viewengine stringwriter

我正在使用以下内容将部分 View 呈现为字符串...

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

        ViewData.Model = model;

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

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

但是它返回带有奇怪标签的 html,如下所示......(我已经包含了一小部分作为它的大 View )
<$A$><div</$A$><$B$> class="modal hide fade"</$B$><$C$> id="dialog"</$C$><$D$> 

这发生在整个 HTML 中。这部分应该是这样的......
<div class="modal hide fade" id="dialog" style="display: none;">

最佳答案

以下代码一直对我有用。尽管我看不出任何重大差异,也无法完全理解为什么会得到所得到的输出。

public static String RenderRazorViewToString(ControllerContext controllerContext, String viewName, Object model)
        {
        controllerContext.Controller.ViewData.Model = model;

        using (var sw = new StringWriter())
            {
            var ViewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
            var ViewContext = new ViewContext(controllerContext, ViewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
            ViewResult.View.Render(ViewContext, sw);
            ViewResult.ViewEngine.ReleaseView(controllerContext, ViewResult.View);
            return sw.GetStringBuilder().ToString();
            }
        }

关于asp.net-mvc - 将部分 View 渲染为字符串 MVC4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19142597/

相关文章:

javascript - 在 Angular 中调用 $post 时如何使用 MVC 重定向

asp.net-mvc-4 - MVC 4 @Html.TextAreaFor 问题

model - MVC4 模型 DefaultValue 命名空间?

c# - 如何在其 View 中仅刷新局部 View ?

c# - 如何在 asp.net MVC View 中有条件地设置模型?

asp.net - 重定向到发布方法/操作

asp.net-mvc - ASP.NET Core 1.0 中的 AWS Elastic Beanstalk 环境变量

asp.net-mvc - Ninject,如何通过调用 LoggerFactory.CreateLogger 注入(inject)通用 Logger<T>

c# - MVC4 表单提交后显示 twitter bootstrap 警报

c# - MVC3 Ajax.BeginForm 不返回特定的局部 View