如何将renderview函数创建为静态函数
本文关键字:创建 静态函数 函数 renderview | 更新日期: 2023-09-27 18:27:24
我想使用renderview函数作为静态函数,我需要做什么?
公共静态字符串RenderView(字符串viewName,对象模型)
public string RenderView(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
您可以创建类似的静态函数
public static class Util
{
public static string RenderView(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
}
然后你可以这样调用这个函数:Util.RenderView("_viewName",Model)
您可以将Controller本身注入静态方法,并从Controller访问所有属性,如ControllerContext、ViewData、TempData。
调用将是这样的(这是控制器对象)
RenderView(this, "_viewName", model)
静态方法如下所示:
public static string RenderView(ControllerBase controller,
string viewName,
object model)
{
controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var 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);
viewResult.ViewEngine.ReleaseView(controller.ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}