MVC 4:如何将字符串转换为IView?

时间:2015-11-09 23:18:01

标签: html asp.net asp.net-mvc asp.net-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);

并将其呈现在:

viewResult.View.Render(viewContext, sw);

我想要的是找不到视图文件,但我希望将存储在我的数据库中的视图呈现为字符串。所以我需要的是:

  1. 获取数据库视图字符串
  2. 呈现数据库视图字符串
  3. 渲染后将其输出为字符串
  4. 我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:-1)

您只需使用

即可
@Html.Raw(mystring)

mystring将是存储在数据库中的视图内容