我这样做的目的是将字符串渲染到 View 中。这就是我所做的:
public string RenderRazorViewToString(string viewName, object model, string controllerName)
{
ViewData.Model = model;
Type controllerType = Type.GetType(controllerName + "Controller");
object controller = Activator.CreateInstance(controllerType);
RouteData rd = new System.Web.Routing.RouteData();
rd.Values.Add("controller", "Account");
((ControllerBase)(controller)).ControllerContext = new ControllerContext(HttpContext, rd, (ControllerBase)controller);
ControllerContext cc = ((ControllerBase)(controller)).ControllerContext;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindView(cc, viewName, null);
var viewContext = new ViewContext(cc, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(cc, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
基本上这段代码所做的是渲染一个在以下位置找到的 View 文件:
var viewResult = ViewEngines.Engines.FindView(cc, viewName, null);
并将其呈现在:
viewResult.View.Render(viewContext, sw);
我想要的不是找到 View 文件,而是我想呈现以字符串形式存储在我的数据库中的 View 。所以我需要的是:
- 获取数据库 View 字符串
- 渲染数据库 View 字符串
- 渲染后输出为字符串
我怎样才能做到这一点?
最佳答案
你可以简单地使用
@Html.Raw(mystring)
mystring 将是存储在数据库中的 View 内容
关于html - MVC 4 : How to convert string into IView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620157/