2012-02-28 30 views
6

Ứng dụng ASP.NET MVC của tôi là UTF-8, nhưng tôi nhận được yêu cầu POST trong Encoding.Default từ ứng dụng của bên thứ ba ngoài tầm kiểm soát của tôi.Nhận dữ liệu POST trong mã hóa không phải UTF-8 (ASP.NET MVC)

Cách tốt nhất và đơn giản nhất để thay đổi yêu cầu mã hóa cho chỉ một hành động của một bộ điều khiển? (Phần còn lại của đơn xin của tôi phải giữ nguyên 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 năm sau đó và vẫn không có câu trả lời thực tế, thậm chí không xa – Leotsarev

Trả lời

-1

Tôi đã đấu tranh với cùng một vấn đề, vì vậy sau khi một số nghiên cứu tôi đã đưa ra giải pháp này:

  1. Tạo một thuộc tính Action tùy chỉnh bộ lọc:

    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. Đặt rằng trên hành động của bạn chỉ định mã hóa mong muốn; trong trường hợp của tôi:

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

Diego, tôi hỏi về mã hóa yêu cầu, không trả lời! Đặt mã hóa Phản hồi khá đơn giản :) – Leotsarev

Các vấn đề liên quan