En el motor de vista clásico Forms Web ASP.NET, podemos configurar ContentType en la página .aspx al tipo deseado.¿Cómo establecer el tipo de contenido en la afeitadora (CSHTML)?
¿Hay un equivalente directo/recomendado en Razor?
En el motor de vista clásico Forms Web ASP.NET, podemos configurar ContentType en la página .aspx al tipo deseado.¿Cómo establecer el tipo de contenido en la afeitadora (CSHTML)?
¿Hay un equivalente directo/recomendado en Razor?
Debe establecer un tipo de contenido diferente en su método de acción.
public ActionResult MyAction() {
Response.ContentType = "something";
return View();
}
que trabajará Acabo de prueba que, también se puede añadir la siguiente línea a su cshtml:
Response.ContentType = "application/javascript";
para que se vea algo como esto:
@{
ViewBag.Title = "Home Page";
Response.ContentType = "application/javascript";
}
Simplemente depende de dónde prefiera hacer el cambio.
Utilice esta:
return Content(json, "application/json");
Oh ... he encontrado esto a través de Google, pero poca gente dice que esto no funcionaba. Gracias por la respuesta rápida marcind :) :) – kidoman
Una pregunta de seguimiento ... ¿debería hacerlo en el controlador o en la vista? @ {Response.ContentType = "..."; } Supongo que tenerlo en la vista es mejor. – kidoman
Si siguiera la separación de los principios de las preocupaciones, entonces argumentaría que la vista es el lugar equivocado para esto. La responsabilidad de la vista es representar la respuesta a la secuencia de salida. Yo personalmente lo haría en el método de acción como arriba si es algo que ocurre una sola vez. Si tuviera varias vistas que necesitaran un tipo de contenido personalizado, escribiría mi propia clase que se deriva de 'ViewResult' y la devolvería en lugar de' View() '. Sin embargo, * puede * escribir este código en la vista en sí, por lo que en última instancia es una cuestión de preferencia. Al final deberías hacer lo que terminaste con tu trabajo :) – marcind