コード例 #1
0
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            if (string.IsNullOrEmpty(this.ViewName))
            {
                this.ViewName = ExecuteViewResult.GetViewName(context);
            }


            base.ExecuteResult(context);
        }
コード例 #2
0
ファイル: BasePdfResult.cs プロジェクト: xtjatswc/FlexibleMVC
        public override void ExecuteResult(ControllerContext context)
        {
            if (String.IsNullOrEmpty(ViewName))
            {
                //ViewName = context.RouteData.GetRequiredString("action");
                this.ViewName = ExecuteViewResult.GetViewName(context);
            }
            if (ViewData == null)
            {
                ViewData = context.Controller.ViewData;
            }
            ViewEngineResult result = ViewEngines.Engines.FindView(context, ViewName, null);
            IView            View   = result.View;

            if (View == null)
            {
                throw new Exception("未找到视图:" + ViewName);
            }

            StringBuilder sbHtml      = new StringBuilder();
            TextWriter    txtWriter   = new StringWriter(sbHtml);
            ViewContext   viewContext = new ViewContext(context, View, ViewData, context.Controller.TempData, txtWriter);

            result.View.Render(viewContext, txtWriter);

            HttpResponseBase httpResponse = context.HttpContext.Response;

            httpResponse.ContentType = System.Net.Mime.MediaTypeNames.Application.Pdf;

            //是否直接下载pdf文件,或者在浏览器中预览呈现
            string attachment = (IsDownload ? "attachment;": "");

            FileName = string.IsNullOrEmpty(FileName) ? context.RouteData.GetRequiredString("action") : FileName;
            context.HttpContext.Response.AppendHeader("Content-Disposition", string.Format("{1}filename={0}.pdf", FileName, attachment));

            HtmlToPdf(sbHtml, httpResponse);

            result.ViewEngine.ReleaseView(context, View);
        }