使用Razor将PartialView渲染为字符串MVC4

本文关键字:字符串 MVC4 Razor PartialView 使用 | 更新日期: 2023-09-27 18:24:41

当使用mvc4的剃刀视图引擎时,如何将部分视图渲染到控制器内的字符串

与webView(Aspx)我使用:

public static string RenderPartialView(this Controller controller, string viewName, object model)
        {
            if (string.IsNullOrEmpty(viewName))
                viewName = controller.ControllerContext.RouteData.GetRequiredString("action");
            controller.ViewData.Model = model;
            using (var sw = new StringWriter())
            {
                ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
                var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
                viewResult.View.Render(viewContext, sw);
                return sw.GetStringBuilder().ToString();
            }
        }

我用剃须刀尝试了这个解决方案,但它无法解决视图,错误消息:

视图不能为空=>ViewResult.View

使用Razor将PartialView渲染为字符串MVC4

如果找不到viewName,但viewResult.View属性将为null,则对FindPartialView的调用不会引发异常。

此外,当找不到视图时,视图Result.SearchLocations将包含搜索视图的位置列表。这将显示搜索视图的位置。

因此,考虑到你最初的问题中没有太多信息(我不能用额外的问题发表评论),我最好的选择是任何视图引擎都找不到你传递的viewName。