gpt4 book ai didi

asp.net-mvc - 有没有办法在 Controller 中获取 PartialView HTML 内容?

转载 作者:行者123 更新时间:2023-12-02 20:00:35 25 4
gpt4 key购买 nike

我有一个带有启用了outputCache的 Controller 的部分 View ,因为我需要缓存此元素。

然后我需要在每个页面中渲染这个 PartialView,但首先我需要进行一些字符串替换。

所以我的问题是,如何在 Controller 中获取部分 View ,以便可以操作内容并在将其返回到 View 之前进行一些字符串替换?

谢谢

最佳答案

我在自定义 Controller 基础上使用这些方法。

    public string RenderPartialToString(string partialViewName, object model)
{
InvalidateControllerContext();
IView view = ViewEngines.Engines.FindPartialView(ControllerContext, partialViewName).View;
string result = RenderViewToString(view, model);
return result;
}

public string RenderViewToString(string viewName, object model)
{
InvalidateControllerContext();
IView view = ViewEngines.Engines.FindView(ControllerContext, viewName, null).View;
string result = RenderViewToString(view, model);
return result;
}

public string RenderViewToString(IView view, object model)
{
InvalidateControllerContext();
string result = null;
if (view != null)
{
StringBuilder sb = new StringBuilder();
using (StringWriter writer = new StringWriter(sb))
{
ViewContext viewContext = new ViewContext(ControllerContext, view, new ViewDataDictionary(model), new TempDataDictionary(), writer);
view.Render(viewContext, writer);
writer.Flush();
}
result = sb.ToString();
}
return result;
}

private void InvalidateControllerContext()
{
if (ControllerContext == null)
{
ControllerContext context = new ControllerContext(System.Web.HttpContext.Current.Request.RequestContext, this);
ControllerContext = context;
}
}

InvalidateControllerContext 方法适用于需要手动实例化 Controller 以便在 Controller 上下文之外呈现部分或 View 的情况。

关于asp.net-mvc - 有没有办法在 Controller 中获取 PartialView HTML 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com