2012-02-28 11 views
6

mi ASP.NET MVC La aplicación es UTF-8, pero recibo la solicitud POST en Codificación.Default de la aplicación de terceros fuera de mi control.Reciba datos POST en codificación que no sea UTF-8 (ASP.NET MVC)

Cuál es la forma más sana y más sencilla de cambiar solicitud codificación para sólo una acción de un controlador? (El resto de mi aplicación debe seguir siendo UTF-8).

public class Message 
{ 
public int id { get; set; } 
public string phone { get; set; } 
public string mes { get; set; } 
public string to { get; set; } 
} 

[HttpPost] 
public ActionResult Receive(Message msg) 
{ 
     AddIncomingMessage(msg); 
     return new EmptyResult(); 
} 
+0

3,5 años más tarde y todavía hay una respuesta real, ni siquiera remota – Leotsarev

Respuesta

-1

yo estaba luchando con el mismo problema, así que después de algunas investigaciones me encontré con esta solución:

  1. Crear un atributo personalizado Acción de filtrado:

    public class CharsetAttribute : ActionFilterAttribute 
    { 
        private readonly string _charset = null; 
    
        public CharsetAttribute() : this("UTF-8") 
        {} 
        public CharsetAttribute(string charset) 
        { 
         _charset = charset; 
        } 
    
        public override void OnActionExecuting(ActionExecutingContext filterContext) 
        { 
         filterContext.HttpContext.Response.Headers["Content-Type"] += string.Concat(";charset=", _charset); 
        } 
    } 
    
  2. poner ese en su acción especificando la codificación deseada; en mi caso:

    [CharsetAttribute("ISO-8859-1")] 
    public ActionResult MyAction(ThirdPartyViewModel model) 
    { (...) } 
    
+0

Diego, me pregunto acerca de la codificación de la solicitud, no la respuesta! Establecer la codificación de Response es bastante simple :) – Leotsarev

Cuestiones relacionadas