簡體   English   中英

Asp.net MVC ViewEngineResult +嵌入視圖

[英]Asp.net MVC ViewEngineResult + embeded views

我有一個工作功能,可以向我返回處理后的視圖(或部分視圖)

我稱之為將此函數發送到視圖的虛擬路徑,例如:

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");

有兩種方法可以實現這種甜蛋白:

  1. 代替資源中的視圖,可以考慮使用RazorGenerator,它將視圖編譯為代碼並具有ViewEngine
  2. 第二種方法是使用VirtualPAthProvider有關此內容的更多信息,請參見這里: 使用VirtualPathProvider從DLL加載ASP.NET MVC視圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM