asp.net-mvc – MVC 5渲染视图到字符串
发布时间:2020-12-15 23:36:37 所属栏目:asp.Net 来源:网络整理
导读:看来,用于将视图呈现到字符串中的大多数代码在MVC 5中不起作用. 我有最新的MVC 5.1.2模板,我试图渲染视图到字符串. public static String RenderViewToString(ControllerContext context,String viewPath,object model = null) { context.Controller.ViewDat
看来,用于将视图呈现到字符串中的大多数代码在MVC 5中不起作用.
我有最新的MVC 5.1.2模板,我试图渲染视图到字符串. public static String RenderViewToString(ControllerContext context,String viewPath,object model = null) { context.Controller.ViewData.Model = model; using (var sw = new StringWriter()) { var viewResult = ViewEngines.Engines.FindView(context,viewPath,null); var viewContext = new ViewContext(context,viewResult.View,context.Controller.ViewData,context.Controller.TempData,sw); viewResult.View.Render(viewContext,sw); viewResult.ViewEngine.ReleaseView(context,viewResult.View); return sw.GetStringBuilder().ToString(); } } 那么它的工作,但它的输出包含大量的$标记,而不是标签.我读了一些关于它是固定在RC版本,但这是旧消息. 问题看起来像这样 <$A$><h1></h1> <table</$A$><$B$> class=""</$B$><$C$>> <tbody</$C$><$D$></$D$><$E$>></tbody> </table></$E$> 我想问一下,如何在最新的MVC 5模板中将视图呈现为字符串? 解决方法
好的,似乎我找到了一个解决方案.这个想法的作者是雅基尔庄园.
class FakeController : ControllerBase { protected override void ExecuteCore() { } public static string RenderViewToString(string controllerName,string viewName,object viewData) { using (var writer = new StringWriter()) { var routeData = new RouteData(); routeData.Values.Add("controller",controllerName); var fakeControllerContext = new ControllerContext(new HttpContextWrapper(new HttpContext(new HttpRequest(null,"http://google.com",null),new HttpResponse(null))),routeData,new FakeController()); var razorViewEngine = new RazorViewEngine(); var razorViewResult = razorViewEngine.FindView(fakeControllerContext,viewName,"",false); var viewContext = new ViewContext(fakeControllerContext,razorViewResult.View,new ViewDataDictionary(viewData),new TempDataDictionary(),writer); razorViewResult.View.Render(viewContext,writer); return writer.ToString(); } } } 这是一个假的上下文和回应的伎俩. 例: String renderedHTML = RenderViewToString("Email","MyHTMLView",myModel ); 我的文件MyHTMLView.cstml存储在Views / Email / MyHTMLView.cshtml中.电子邮件是一个假控制器名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何使用Response.OutputStream.Write将文件发送
- “超频”处理ASP.NET应用的技术
- 将ASP.NET捆绑设置为不删除第三方版权
- asp.net core在linux上的部署调试
- asp.net – 如何将新的Web应用程序部署到IIS站点的子目录,而
- Advanced Architecture for ASP.NET Core Web API
- asp.net-mvc-5 – 无法在ASP.NET MVC 5.1上调用UrlHelper的
- asp.net-mvc – @ Html.DisplayNameFor的详细信息模型
- asp.net-mvc – 如何将值传递给MVC3母版页(_layout)?
- asp.net-mvc – ASP.NET MVC IIS 7.5
推荐文章
站长推荐
- 在代理服务器后面设置ASP.NET应用程序的基本URL
- asp.net-mvc – ASP.NET MVC 3 Razor模板VS Rend
- asp.net-mvc – ASP.NET MVC IIS7 FireFox:尾部
- asp.net-mvc – MVC3区域中的相对内容路径
- asp.net – 没有owin.Environment项目在上下文中
- 一句代码实现批量数据绑定[下篇]
- asp.net – 尝试通过方法’HttpConfiguration..c
- asp.net – 如何修复“’ddlAssignedTo’有一个无
- VS 2012中解决方案资源管理器中的asp.net配置按钮
- ASP.NET存储SQL中的图像并检索Asp:Image
热点阅读