作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有启用了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/
我是一名优秀的程序员,十分优秀!