2016-03-22 18 views
0

Die unten angegebenen Codes funktioniert perfekt für mich, wenn ich es mit reinem asp.net (aspx) -Anwendung mit Umleitung und Front-End in ASP-Net verwenden. Jetzt ist mein Szenario, ich habe Mixed-Modus-Anwendung in MVC und asp.net (ASPX-Seite) , so dass ich einfach die gleiche Seite (Aspx) zum Herunterladen von Datei durch Aufruf von MVC-Controller-Methode, die nicht funktioniert. Ich habe Ajax-Aufruf geschrieben, um eine void-Methode im Controller aufzurufen, die zur aspx-Seite umleitet, wo dieser Code geschrieben wird, Rest des Falles ist wie oben erwähnt.Datei-Download in aspx und MVC gemischten Modus Fall

**string path = HttpContext.Current.Server.MapPath("~/Reporting/OnePager.xlsm"); 
       string id = Request.Params["id"]; 
       HttpResponse response = this.Response; 
       response.Buffer = true; 
       response.Clear(); 
       response.ContentType = "application/vnd.ms-excel"; 
       response.AddHeader("content-disposition", "attachment; filename=" + id + "-One-Pager.xlsm"); 
       response.WriteFile(path); 
       response.Flush(); 
       response.End();** 

Hier Ajax-Aufruf

if (arrselected.length > 0) { 
       $.ajax({ 
        type: 'POST', 
        url: '@Url.Action("ExportProjectOnePager", "controller")', 
        dataType: 'json', 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify({ ID: arrselected[0]}), 
        success: function (output) { 
         if (output.notValid.length != arrselected.length) { 
          alert("success"); 
         } 

         if (output.notValid != "") { 
          alert("You do not have permission to see this IDs :" + output.notValid); 
         } 
        } 
       }); 
      } 

und hier ist ungültig Controller-Methode

public void ExportProjectOnePager(string ID) 
     { 
      string _Path = @"~/Reporting/ProjectOnePager.aspx?id=" + ID; 
      Response.Redirect(_Path); 
     } 
+0

Können Sie zeigen Sie Ihre Ajax nennen? Wenn Ihre Methode ungültig ist, wie werden Sie dann auf eine andere Ansicht oder Seite umgeleitet? –

+0

danke für deine schnelle antwort und interesse, unten gegeben ist mein ajax-anruf von mvc view .. –

+0

Ich habe die Frage aktualisiert –

Antwort

0

Sie das gleiche in der Controller-Methode tun, aber Sie müssen es ändern Fileresult zurückzukehren oder FileStreamResult, und kopieren Sie den Code dort.

Sie können auch die Controller-Methode ändern RedirectResult und in der Code Verwendung zurückkehrt Redirect (im Folgenden: aspx Seite ') anstelle von Response.Redirect zurückzukehren und den Rück Typ void ist