2009-10-14 8 views
53

Considérez la nécessité de renvoyer un fichier texte brut d'une méthode de contrôleur à l'appelant. L'idée est d'avoir le fichier téléchargé, plutôt que vu en clair dans le navigateur.ASP.NET MVC: renvoi du fichier texte brut à télécharger à partir de la méthode du contrôleur

J'ai la méthode suivante, et cela fonctionne comme prévu. Le fichier est présenté au navigateur pour téléchargement, et le fichier est rempli avec la chaîne.

Je voudrais rechercher une implémentation 'plus correcte' de cette méthode, car je ne suis pas à 100% à l'aise avec le type de retour void.

public void ViewHL7(int id) 
{ 
    string someLongTextForDownload = "ABC123"; 

    Response.Clear(); 
    Response.ContentType = "text/plain"; 
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.hl7", id.ToString())); 
    Response.Write(someLongTextForDownload); 
    Response.End(); 
} 

Répondre

112

Utilisez la méthode du fichier sur la classe du contrôleur pour retourner un FileResult

public ActionResult ViewHL7(int id) 
{ 
    ... 

    return File(Encoding.UTF8.GetBytes(someLongTextForDownLoad), 
       "text/plain", 
        string.Format("{0}.hl7", id)); 
} 
+0

TKS tvanfosson. Votre réponse m'a beaucoup aidé. –

+0

ne serait-il pas bien si SO pourrait ramasser les classes .net afin que nous puissions voir les surcharges sans avoir à google autour: p – Jimmy

5

Vous devez renvoyer un FileContentResult à partir de votre méthode.

Questions connexes