Dans le moteur de vue ASP.NET Web Forms classique, nous pouvons définir ContentType dans la page .aspx sur le type souhaité.Comment définir contenttype dans rasoir (CSHTML)?
Existe-t-il un équivalent direct/recommandé dans Razor?
Dans le moteur de vue ASP.NET Web Forms classique, nous pouvons définir ContentType dans la page .aspx sur le type souhaité.Comment définir contenttype dans rasoir (CSHTML)?
Existe-t-il un équivalent direct/recommandé dans Razor?
Vous devez définir un type de contenu différent dans votre méthode d'action.
public ActionResult MyAction() {
Response.ContentType = "something";
return View();
}
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.
Utilisez ceci:
return Content(json, "application/json");
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
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
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