2012-08-17 107 views
0

保存HTML報告,我想顯示另存爲對話框,用戶在我的MVC應用程序,並允許他保存爲PDF或字的格式一些HTML報告。爲此,我需要在服務器端使用文件流和IO功能嗎?或者它可能在JQuery級別本身?通過顯示另存爲對話框

我發現網絡上的一些參考,如添加一個響應頭內容處置,但沒有得到如何應用它。你能提出一些建議嗎?

回答

0

必須從ActionResult與輸出播放所需的方式創建一個後代。

這是一類礦井我創建實施「另存爲Excel」功能:

  public class ExcelResult : ActionResult 
      { 
       private string _fileName; 
       private IQueryable _rows; 
       private string[] _headers = null; 
       private string _data; 

       private TableStyle _tableStyle; 
       private TableItemStyle _headerStyle; 
       private TableItemStyle _itemStyle; 

       public string FileName 
       { 
        get { return _fileName; } 
       } 

       public IQueryable Rows 
       { 
        get { return _rows; } 
       } 



       public ExcelResult(string data, string fileName) 
       { 
        _fileName = fileName; 
        _data = data; 
       } 

       public override void ExecuteResult(ControllerContext context) 
       { 
        WriteFile(_fileName, "application/ms-excel", _data);    
       } 


       private string ReplaceSpecialCharacters(string value) 
       { 
        value = value.Replace("’", "'"); 
        value = value.Replace("「", "\""); 
        value = value.Replace("」", "\""); 
        value = value.Replace("–", "-"); 
        value = value.Replace("…", "..."); 
        return value; 
       } 

       private void WriteFile(string fileName, string contentType, string content) 
       { 
        HttpContext context = HttpContext.Current; 
        context.Response.Clear(); 
        context.Response.AddHeader("content-disposition", "attachment;filename=" + fileName); 
        context.Response.Charset = ""; 
        context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
        context.Response.ContentType = contentType; 
        context.Response.Write(content); 
        context.Response.End(); 
       } 
      } 

你可以用這個例子來生成HTML字。 PDF是另一回事,這是'。

相關問題