介绍
这篇文章给大家分享的是有关ASP。净MVC设置生成PDF文件并可以点击预览示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
<强>背景及需求强>
项目使用的是MVC4框架,其中有一个功能是根据设置生成PDF文件,并在点击时直接预览。
<强>实现过程强>
<强> 1,第一版实现代码:强>
<强> HTML内容强>
@ {=,Layout 零; } & lt; ! DOCTYPE html> & lt; html> & lt; head> ,& lt; meta name=皏iewport",内容=?device-width"宽度,/比; ,& lt; title> Index & lt;/head> & lt; body> & lt; p>大敌; ,@Html.ActionLink(“预览PDF",“GetPdf", null, new {,目标=癬blank"}) ,& lt;/p> & lt;/body> & lt;/html>
<>强控制器代码强>
, public ActionResult GetPdf () ,{ return 才能;new  FilePathResult(“~/内容/,Garbage Collection Handbook.pdf",,“应用程序/pdf"); 以前,}><强>缺点:标题和文件下载时名称不是很友好。强>
<强> 1,第二版实现代码:强>
<强>我们做了2件事情:强>
<强>,1,让下载弹出框能显示友好的下载文件名。强>
<强>,2,让浏览器中的其他两个显示GetPdf的地方也显示友好的内容。强>
<>强自定义ActionFilter,对头进行修改,变为内联。(直接这么替换不知道会不会有隐患。)强>
public class MyPdfActionFilter :, ActionFilterAttribute ,{ ,public override  void OnResultExecuted (ResultExecutedContext filterContext) ,{//附加=附件才能% 3 b +文件名% 3 d % 22 +垃圾+收藏+ Handbook.pdf % 22} var 才能;filerHeader =, filterContext.HttpContext.Response.Headers.Get (“Content-Disposition"); if 才能;(! string.IsNullOrEmpty (filerHeader),,,, filerHeader.Substring (0,,“attachment" . length) .ToLower () .Equals (“attachment")) {才能filterContext.HttpContext.Response.Headers才能[“Content-Disposition"],=,“inline", +, filerHeader.Substring (“attachment" . length, filerHeader.Length 作用;“attachment" . length); ,,} ,} 以前,}><>强自定义ActionNameSelector实现对行动名称的拦截和判断。强>
public class MyActionNameSelecter : ActionNameSelectorAttribute ,{ ,public override  bool IsValidName (ControllerContext controllerContext, string actionName,, MethodInfo methodInfo) ,{ return 才能;actionName.Contains (“pdf文件预览“); ,} 以前,}><>强控制器内代码修改如下强>
[MyActionNameSelecter] ,(MyPdfActionFilter) ,public ActionResult  GetPdf () ,{ return 才能;new  FilePathResult(“~/内容/,Garbage Collection Handbook.pdf",,“应用程序/pdf")//才能增加FileDownloadName设置,但是这会让内容以附件的形式响应到浏览器(具体参考文件响应模式:内联和附件)。//才能文件变成被浏览器下载。 {才能,FileDownloadName =,“从而Garbage Collection Handbook.pdf",}; 以前,}><强>页面内容修改如下强>
@ {=,Layout 零; } & lt; ! DOCTYPE html> & lt; html> & lt; head> ,& lt; meta name=皏iewport",内容=?device-width"宽度,/比; ,& lt; title> Index & lt;/head> & lt; body> & lt; p>大敌; @ *大敌;第二个参数可能是一个动态生成的内容,需要行动中增加名称选择拦截,所以自定义了一个ActionNameSelectorAttribute类满足要求只* @ ,@Html.ActionLink(“预览PDF",,“从而Garbage Collection Handbook-PDF文件预览“,,null, new {,目标=癬blank"}) ,& lt;/p> & lt;/body> & lt;/html><强>最终效果强>
感谢各位的阅读!关”于ASP。净MVC设置生成PDF文件并可以点击预览示例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
ASP。净MVC设置生成PDF文件并可以点击预览示例