将 MVC 视图转换为 HTML 字符串 - 错误“值不在预期范围内。”
Posted
技术标签:
【中文标题】将 MVC 视图转换为 HTML 字符串 - 错误“值不在预期范围内。”【英文标题】:Convert MVC View to HTML string - Error " Value does not fall within the expected range." 【发布时间】:2016-10-26 07:53:43 【问题描述】:以下是我的行动
public PartialViewResult PrintOrder(string orderNo)
ViewBag.OrderId = orderNo;
return PartialView();
以下是我的代码
public static String RenderViewToString(PartialViewResult result,ControllerContext context, String viewPath,string orderNo, object model = null)
context.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
result.View = ViewEngines.Engines.FindPartialView(context, "PrintOrder").View;
ViewContext vc = new ViewContext(context, result.View, result.ViewData, result.TempData, sw);
result.View.Render(vc, sw);
var html = sw.GetStringBuilder().ToString();
return html;
//return "No Data";
我在 result.View.Render(vc, sw) 收到错误,因为“值不在预期范围内。”
什么是错误?
【问题讨论】:
看到***.com/questions/11996205的坏消息。 【参考方案1】:如果需要将部分视图转换为 html 字符串并从控制器返回字符串,请尝试此代码。
Public ActionResult PrintOrder(string orderNo)
//code to get the model
this.ViewData.Model = YourModel;
//ViewData["ordno"] = orderNo; uncomment this if you need
var htmlStr = string.Empty;
try
var sw = new StringWriter();
var viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, "partialviewName");
var viewContext = new ViewContext(this.ControllerContext, viewResult.View, this.ViewData, this.TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
htmlStr = sw.GetStringBuilder().ToString();
catch(Exception e)
return htmlStr;
【讨论】:
这与问题有什么关系?而且代码只是OP的代码的重复!以上是关于将 MVC 视图转换为 HTML 字符串 - 错误“值不在预期范围内。”的主要内容,如果未能解决你的问题,请参考以下文章
带有实体框架和 SQL Server 数据库的 ASP.NET MVC - 图像未显示在视图中......错误显示“无法将“字节”转换为“字符串”