이 방법을 사용하여 뷰를 html로 렌더링합니다 (pdfs 생성에 필요함). 내가보기에 모델을 변경할 때html로 면도 페이지를 렌더링하려면 다른 모델이 필요합니다.
public static class ControllerContextExtensions
{
public static string RenderViewToHtml(this ControllerContext context, string viewName, object model)
{
context.Controller.ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(context,
viewName);
ViewContext viewContext = new ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
string html = sw.GetStringBuilder().ToString();
string baseUrl = string.Format("{0}://{1}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Authority);
html = Regex.Replace(html, "<head>", string.Format("<head><base href=\"{0}\" />", baseUrl), RegexOptions.IgnoreCase);
return html;
}
}
그러나, 항상 문구 Render(viewContext, sw);
에서 (실패 부분보기는 타입 B의 모델을 선언에도 불구하고, '이 모델 A를 필요로하지만, 전달 모델은 B 형이다' 참고 :. "ABC"부분보기가 실험으로 에서
@model InvoiceReportModelItem
, 나는 BaseReportViewModel의 자손 타입의 빈 모델을 통과 한 지금은 말한다 내가 이전에 통과하려고 유형의 모델을 필요로
. 문제의 원인이 될 수있는 것은 무엇입니까? 파일 이름 바꾸기 (어쩌면 사전이 캐시되었거나 도움이되지 않았을 수도 있음)
내가 묻는 것은 확실하지 않지만 여러 모델이 포함 된 모델을 사용할 수 있습니다. – Danieboy
@Danieboy, 문제는보기가 BaseReportViewModel (잘못된) 또는 InvoiceReportModelItem ("ABC"보기의 모델로 선언 됨)의 자손도 아니며 요청하는 모델을 허용하지 않는다는 것입니다. – pwrigshihanomoronimo
** abc에 지정된 모델은 무엇입니까? **보기? @Danieboy 다시 예외 메시지를 확인하시기 바랍니다 –