MVC 4:如何从数据库字符串渲染视图并生成字符串?

时间:2015-11-09 06:48:04

标签: c# asp.net-mvc string asp.net-mvc-4 razor

何时将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, ....";

2 个答案:

答案 0 :(得分:0)

public ActionResult RenderViewToString()
{
    string html = "this is your view string";

    // Push it to a View
    ViewBag.RenderedHtml = html;

    return View();
}

有用吗?

link:http://www.codemag.com/article/1312081

答案 1 :(得分:0)

您可能想尝试此https://github.com/Antaris/RazorEngine。通过使用RazorEngine,您可以从数据库字符串而不是cshtml文件输出html