2010-12-14 11 views
17

Tengo un controlador ASP.NET MVC llamado diccionario con el método ControlsLangJsFile. El método devuelve la vista del control de usuarios (ASCX) que contiene variables de JavaScript.Cómo cambiar el ContentType devuelto en el controlador ASP.NET MVC (ActionResult)

Cuando llamo al método, devuelve variables con cadenas analizadas, pero el tipo de contenido es html/text. Debe ser: application/x-javascript

public ActionResult ControlsLangJsFile() 
    { 
     return View("~/Views/Dictionary/ControlsLangJsFile.ascx",); 
    } 

¿Cómo puedo lograr esto?

Respuesta

27

usuarios controlan no acepta ContentType = "text/xml"

Solución:

public ActionResult ControlsLangJsFile() 
    { 
     Response.ContentType = "text/javascript"; 
     return View("~/Views/Dictionary/ControlsLangJsFile.ascx"); 
    } 
+2

Esto no funciona para las vistas Razor (no estoy seguro acerca de otros motores de vista). Ver [mi respuesta] (http://stackoverflow.com/a/15930411/5496) para la solución: – Peter

+0

Estoy usando Razor/MVC 4 y esto funciona bien en el controlador (que es donde preferiría colocar esto ya que no quiero una vista si devuelvo tipos de archivos, como PDF). – Fenton

2

Así, basta con cambiar el tipo de contenido en consecuencia:

ASP.NET MVC and text/xml content type

+0

los usuarios un control dosn't aceptar ContentType = "text/xml" – jmav

+0

Por favor, vea también las otras respuestas ... – rsenna

+0

lo hice, también agregó otra solución, thx – jmav

1

Try :

return Json(new 
{ 
     uCode = SysContext.CurrentUserCode, 
     uPwd = SysContext.CurrentUserPwd, 
     rMe = SysContext.RememberMe 
}, "application/json", JsonRequestBehavior.AllowGet); 
14

tenía esta misma pregunta, mientras que la construcción de una visión de afeitar con JS en ella y trató de utilizar @ solución de jmav:

public ActionResult Paths() 
{ 
    Response.ContentType = "text/javascript"; //this has no effect 
    return View(); 
} 

que no funciona cuando regrese a View(). Parece que la representación de la vista establece el tipo de contenido en sí a pesar de lo que se asigna en el método del controlador.

su lugar, hacer la asignación en el código de la vista en sí:

// this lives in viewname.cshtml/vbhtml 
@{ 
    this.Response.ContentType = "text/javascript"; 
} 
// script stuff... 
+1

Configurando 'Response.ContentType' en la acción del Controlador trabajada para mí en MVC 3. –

Cuestiones relacionadas