發現這麼多人在用這個MagicAJax框架,但是沒有人發現這個框架對特殊字符Html標記未處理。回調後對頁面中特殊字符顯示問題,比如特別符號 &#?; (其中 ? 代表 ISO 8859-1 的編碼) < < > > & & " " 等,當一本框值為<100公的的豬,其中有一小於號 (<),而&符號又被譯出(& amp),最後文本框的值將會變成& amp lt,這樣幾個字符。有如下兩種解決辦法:
解決辦法一:在頁面中顯示數據時所有的特殊符號替換為全角,不過這個方法太笨了,也太麻煩了。建議使用第二種方法。
例如:
string str = "所有<100公所的豬";
str.Replace('<', '<');//替換為全角,不過,還有< < > > & 這些符號哦,一個個替換就是了,
解決辦法二:更改MagicAjax源代碼,不用怕,^-^, 這個更改並不難,首先到官方網站下載。net2.0的源代碼下來,打開項目,找到一個為 AJaxCallHelper.cs 的類,這類的功能還真是強啊。在裡面找到方法為EncodeString(string str),源代碼如下:
public static string EncodeString(string str)
{
//TODO: use 1 regular expression (faster)
System.Text.StringBuilder sb = new System.Text.StringBuilder(str);
sb.Replace("\\", "\\\\");
sb.Replace("\"", "\\\"");
sb.Replace("\r", "\\r");
sb.Replace("\n", "\\n");
sb.Replace("\t", "\\t");
sb.Replace("<", "<");
sb.Replace("&", "&");
sb.Insert(0, '\"');
sb.Append('\"');
return sb.ToString();
}
把這些特殊字符在顯示的時候替換不OK了,最後Release項目,問題解決了。哦也!
讓MagicAJax支持中文!問題解決並不難,網上已有很多解決的相關文章,這裡就不多說了,不過在項目中這個方法其實也蠻好用的,
AjaxCallHelper.WriteAlert("數據保存成功!")//當一按扭為AJaxpanel內時,注冊Javascript 的alert腳本是彈不出消息框的,用這個彈出來就行了,看懂這個框架機制的你就知道它為什麼彈出不消息框了,hoho。