asp.net-mvc – MVC 5渲染视图到字符串
发布时间:2020-05-24 01:26:39 所属栏目:asp.Net 来源:互联网
导读:看来,用于将视图呈现到字符串中的大多数代码在MVC 5中不起作用. 我有最新的MVC 5.1.2模板,我试图渲染视图到字符串. public static String RenderViewToString(ControllerContext context, String viewPath, object model = null) { context.Controlle
|
看来,用于将视图呈现到字符串中的大多数代码在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-mvc – 使用SharpDevelop构建ASP.NET MVC应用程序的
- asp.net – 表单验证忽略默认文档
- 写单元测试在ASP.NET Web API中使用User.Identity.Name的方
- asp.net – 如何全局创建CustomPrincipal(使用和不使用Auth
- asp.net – 最后在LINQ列表中
- asp.net-mvc – 什么是Razor中的ViewBag.Title?
- asp.net-web-api – ASP.Net Web API帮助页面:记录复杂类型
- 如何在服务器上安装ASP.NET MVC 5?
- 选择顶部N值,但跳过M个结果
- asp.net – IIS Web Garden中的Singleton对象
推荐文章
站长推荐
- asp.net-mvc – Asp.Net MVC捆绑,最好的方式来检
- ASP.NET 5中是否有缓存模式的指导
- asp.net – 为什么HttpContext.Current.User.Ide
- asp.net-mvc-3 – 如何注入依赖项到global.asax.
- asp.net-core – 使用.net核心进行Hangfire依赖注
- 如果会话正在使用,单个asp.net用户可以一次使用多
- asp.net – 为什么IFormFile显示为null,我该如何
- asp.net-core – ABP框架中的集成Windows身份验证
- asp.net – 为每个网站/应用程序创建单独的IIS应
- 如何在asp.net中检测新的Microsoft浏览器“Edge”
热点阅读
