Asp.net MVC ViewEngineResult + 嵌入式视图
本文关键字:嵌入式 视图 ViewEngineResult net MVC Asp | 更新日期: 2023-09-27 18:33:38
我有一个工作函数,它向我返回一个已处理的视图(或部分视图)
我调用此函数将虚拟路径发送到视图,例如:
string viewHtml = GetViewPageHtml(this, model, "~/Views/PartialView.cshtml");
public static string GetViewPageHtml(Controller controller, object model, string viewName)
{
ViewEngineResult result = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
if (result.View == null)
throw new Exception(string.Format("View Page {0} was not found", viewName));
controller.ViewData.Model = model;
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (System.Web.UI.HtmlTextWriter output = new System.Web.UI.HtmlTextWriter(sw))
{
ViewContext viewContext = new ViewContext(controller.ControllerContext, result.View, controller.ViewData, controller.TempData, output);
result.View.Render(viewContext, output);
}
}
return sb.ToString();
}
是否有任何解决方案可以使此功能查找嵌入式视图?
如果我有一个嵌入式视图并调用相同的函数,它找不到页面:
// not working
string viewHtml = GetViewPageHtml(this, model, "Application1.Views.EmbededPartialView.cshtml");
有两种方法可以实现这种解决方案:
- 考虑将视图编译为代码的 RazorGenerator,而不是资源中的视图,并具有 ViewEngine
- 第二种方法是使用
VirtualPAthProvider
- 您可以在此处找到有关此内容的更多信息:使用VirtualPathProvider从DLL加载 ASP.NET MVC视图