2011-07-15 35 views
3

誰かが助けることができるかどうか疑問に思っています。私はスプレッドシートを生成し、指定された場所に保存するこのコードを書いています。私は保存された場所からファイルを読んで、次にどこに保存するかを尋ねることで、 "名前を付けて保存"ダイアログボックスを表示したいと思います。 Excelファイルが正常に生成されていて、正常に開くことができます!しかし、私の問題は、私が書いたコードは、直接私のブラウザにファイルを出力するようだ、私は期待どおりのダイアログボックスとして保存を表示しない、私のブラウザ画面上のExcelファイルのすべての内容を取得!MVC C#ファイルをダウンロードしてダイアログに保存

public ActionResult FormSuccess() 
     { 
      String FileName = System.Configuration.ConfigurationManager.AppSettings["FileName"].ToString(); 
      String FilePath = System.Configuration.ConfigurationManager.AppSettings["FileSaveLocation"].ToString(); 
      System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
      response.ClearContent(); 
      response.Clear(); 
      response.ContentType = "application/vnd.xls"; 
      response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";"); 
      response.TransmitFile(FilePath + FileName); 
      response.End(); 

      return PartialView("FormSuccess"); 
     } 

答えて

6

ヨンヴィンス、どのようにトリックですか?まだメダリオンを着ていますか? :)

あなたはFileContentResult代わりのPartialViewを使用することではないでしょうか?同じ呼び出しでファイルとHTMLの "成功"コンテンツを返すことはできません。おそらくPartialViewを呼び出してからjavascriptを使用して新しいウィンドウでFileContentResult URLを開く必要があります。 http://www.mikesdotnetting.com/Article/125/ASP.NET-MVC-Uploading-and-Downloading-Files

、次のURLにも:私はあなたの問題はあなたがPartialViewを返すということだと思い

http://weblogs.asp.net/rajbk/archive/2010/05/03/actionresult-types-in-mvc2.aspx

4

はこれを参照してください。

public ActionResult FileXls() 
    { 
     var output = new MemoryStream(); 
     var writer = new StreamWriter(output); 

     //create your workbook excel file 
     .... 
     //workbook.Save(output); 

     writer.Flush(); 
     output.Position = 0; 
     return File(output, "text/excel", "file.xls"); 
    } 
:私はあなたに私の実装の小さなexmapleを挙げてみましょう
関連する問題