2017年5月25日 星期四

在IE底下使用中文傳遞參數,無法邊碼

前幾天發生了一個很妙的事

參考:http://blog.kkbruce.net/2014/09/ie11-pass-unicode-querystring-with-aspnet-mvc-http502.html#.WSanqut95QI

大概簡述一下
就是使用GET傳遞參數的時後,"?name=微軟"這段參數
在chrome或firefox都沒問題,但是在ie的話,中文會讀取錯誤

今天又發生類似的問題
可是是在mvc的一個area底下
http://aaa.bbb/{area}/{controller}/{action}?name=微軟

很好,這次我吃不到參數了
研究了一下發現,在開AREA的時後有個route設定的cs把參數名稱預設為id了

    context.MapRoute(
        "AreaName_default",
        "AreaName/{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

當然,我第一個想法就是把ID拿掉

    context.MapRoute(
        "AreaName_default",
        "AreaName/{controller}/{action}/",
        new { controller = "Home", action = "Index" }
    );

很好,它回給我404,連參數都不給傳了


好吧
我放棄,我直接把參數名稱改稱ID

[GET("AreaName/{controller}/{action}/{id}")]

哦哦哦哦,它終於可以動了
真讓人感動!

不是我在說,微軟你不要婊自己的東西好嗎,很麻煩內