使用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
如果找不到viewName,但viewResult.View属性将为null,则对FindPartialView的调用不会引发异常。
此外,当找不到视图时,视图Result.SearchLocations将包含搜索视图的位置列表。这将显示搜索视图的位置。
因此,考虑到你最初的问题中没有太多信息(我不能用额外的问题发表评论),我最好的选择是任何视图引擎都找不到你传递的viewName。