Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net中将布局呈现为字符串?_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 如何在asp.net中将布局呈现为字符串?

C# 如何在asp.net中将布局呈现为字符串?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我将整个布局作为字符串保存在数据库中,我希望将布局从数据库呈现到视图中。 例如: public ActionResult index() { string layout = GetLayout(); //in below how should I render layout to view return View("index", layout); } 我已经使用了result=Engine.Razor.RunCompile(模板,key.ToString())以呈

我将整个布局作为字符串保存在数据库中,我希望将布局从数据库呈现到视图中。 例如:

 public ActionResult index()
 {
   string layout = GetLayout();

   //in below how should I render layout to view 
   return View("index", layout);
 }

我已经使用了
result=Engine.Razor.RunCompile(模板,key.ToString())以呈现布局,但它避免呈现HTML帮助程序。

似乎没有内置的机制来实现该功能。需要为该功能提供自定义解决方案。此主题已在本文中讨论过。
您可以参考该解决方案。

似乎没有实现该解决方案的内置机制。需要为该解决方案提供自定义解决方案。此主题已在本文中讨论过。
您可以参考它。

我正在使用下面的代码,它对我来说运行良好。我还在Web API中使用它以字符串形式返回视图

有关更多信息,您可以创建静态类,并将下面的方法设置为静态

 public string RenderPartialView(string controllerName, string viewName, object model = null) {
     System.Web.HttpContextBase contextBase = new System.Web.HttpContextWrapper(System.Web.HttpContext.Current);

     var routeData = new RouteData();
     routeData.Values.Add("controller", controllerName);
     var controllerContext = new System.Web.Mvc.ControllerContext(contextBase, routeData,
      new EmptyController());

     var razorViewEngine = new System.Web.Mvc.RazorViewEngine();
     var razorViewResult = razorViewEngine.FindPartialView(controllerContext, viewName, false);

     var writer = new StringWriter();
     System.Web.Mvc.ViewContext viewContext;


     viewContext = new System.Web.Mvc.ViewContext(controllerContext, razorViewResult.View,
      new System.Web.Mvc.ViewDataDictionary(model), new System.Web.Mvc.TempDataDictionary(), writer);

     viewContext.ViewData["controller"] = controllerName;

     HttpContext.Current.Items.Add("controller", controllerName);

     razorViewResult.View.Render(viewContext, writer);

     string htmlString = writer.ToString();
     writer.Dispose();

     return htmlString;
    }

现在请找到我们如何从控制器调用它的示例

RenderPartialView("Home", string.Format("~/Views/Home/{0}.cshtml", "Index"));

我希望这对您有用。

我正在使用下面的代码,它对我来说运行良好。我还在Web API中使用它以字符串形式返回视图

有关更多信息,您可以创建静态类,并将下面的方法设置为静态

 public string RenderPartialView(string controllerName, string viewName, object model = null) {
     System.Web.HttpContextBase contextBase = new System.Web.HttpContextWrapper(System.Web.HttpContext.Current);

     var routeData = new RouteData();
     routeData.Values.Add("controller", controllerName);
     var controllerContext = new System.Web.Mvc.ControllerContext(contextBase, routeData,
      new EmptyController());

     var razorViewEngine = new System.Web.Mvc.RazorViewEngine();
     var razorViewResult = razorViewEngine.FindPartialView(controllerContext, viewName, false);

     var writer = new StringWriter();
     System.Web.Mvc.ViewContext viewContext;


     viewContext = new System.Web.Mvc.ViewContext(controllerContext, razorViewResult.View,
      new System.Web.Mvc.ViewDataDictionary(model), new System.Web.Mvc.TempDataDictionary(), writer);

     viewContext.ViewData["controller"] = controllerName;

     HttpContext.Current.Items.Add("controller", controllerName);

     razorViewResult.View.Render(viewContext, writer);

     string htmlString = writer.ToString();
     writer.Dispose();

     return htmlString;
    }

现在请找到我们如何从控制器调用它的示例

RenderPartialView("Home", string.Format("~/Views/Home/{0}.cshtml", "Index"));

我希望这将对您有用。

我希望在控制器中渲染唯一的布局,但这将使用控制器渲染视图。我读到[.我可以使用数据库中该字符串的布局控制器吗?源中有什么变化?@Ankit`var razorViewResult=razorViewEngine.FindPartialView(controllerContext,viewName,false);`how change for layout?@Ankit在这种情况下,您可以传递空控制器。我希望在控制器中呈现唯一的布局,但这将使用控制器呈现视图。我读取[。我可以使用数据库中该字符串的布局控制器吗?源中有什么更改?@Ankit`var razorViewResult=razorViewEngine.FindPartialView(controllerContext,viewName,false);`如何更改布局?@ankit在这种情况下,您可以传递空控制器。