何时将mvc 4 razor视图从数据库字符串渲染到视图中,最终产品是否将视图转换为字符串?
我已经能够渲染视图(文件)并生成字符串,但我需要的是从字符串(数据库)渲染视图。
这是我用来将视图(文件)呈现为字符串的代码:
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();
}
}
我需要以某种方式操纵这些代码:
var viewResult = ViewEngines.Engines.FindView(cc, viewName, null);
var viewContext = new ViewContext(cc, viewResult.View, ViewData, TempData, sw);
因此代码不会尝试查找要呈现的视图(文件),而只是尝试呈现字符串视图。例如:
string view = "This is the view that needs to be rendered! @Model.Name, ....";
答案 0 :(得分:0)
public ActionResult RenderViewToString()
{
string html = "this is your view string";
// Push it to a View
ViewBag.RenderedHtml = html;
return View();
}
有用吗?
答案 1 :(得分:0)
您可能想尝试此https://github.com/Antaris/RazorEngine。通过使用RazorEngine,您可以从数据库字符串而不是cshtml文件输出html