2010-12-10 15 views

Répondre

15

Vous devez définir un type de contenu différent dans votre méthode d'action.

public ActionResult MyAction() { 
    Response.ContentType = "something"; 
    return View(); 
} 
+0

Oh ... Je trouve cela via Google mais peu de gens ont dit que cela ne fonctionne pas. Merci pour la réponse rapide marcind :) – kidoman

+0

Une question de suivi ... devrais-je le faire dans le contrôleur ou dans la vue? @ {Response.ContentType = "..."; } Je suppose que l'avoir dans la vue est mieux. – kidoman

+1

Si vous deviez suivre les principes de séparation des préoccupations alors je dirais que la vue est le mauvais endroit pour cela. La responsabilité de la vue est de rendre la réponse au flux de sortie. Personnellement, je le ferais soit dans la méthode d'action comme ci-dessus si c'est une chose ponctuelle. Si j'avais plusieurs vues qui nécessitaient un type de contenu personnalisé, j'écrirais ma propre classe dérivée de 'ViewResult' et je retournerais celle-ci au lieu de' View() '. Cependant, vous * pouvez * écrire ce code dans la vue elle-même, c'est donc une question de préférence. En fin de compte, vous devriez faire ce que votre travail est fait :) – marcind

13

Ce que je travaillerai tout testé, vous pouvez également ajouter la ligne suivante à votre cshtml:

Response.ContentType = "application/javascript"; 

afin qu'il ressemble à ceci:

@{ 
    ViewBag.Title = "Home Page"; 
    Response.ContentType = "application/javascript"; 
} 

Il vient Cela dépend de l'endroit où vous préférez effectuer le changement.

0

Utilisez ceci:

return Content(json, "application/json");