發(fā)現(xiàn)這么多人在用這個(gè)MagicAjax框架,不過沒有人發(fā)現(xiàn)這個(gè)框架對(duì)特別字符html標(biāo)記未處理。回調(diào)后對(duì)頁面中特別字符顯示問題,比如特別符號(hào) ?; (其中 ? 代表 ISO 8859-1 的編碼) < < > > & & " " 等,當(dāng)一本框值為<100公的的豬,其中有一小于號(hào) (<),而&符號(hào)又被譯出(& amp),最后文本框的值將會(huì)變成& amp lt,這樣幾個(gè)字符。有如下兩種解決辦法:
解決辦法一:在頁面中顯示數(shù)據(jù)時(shí)所有的特別符號(hào)替換為全角,不過這個(gè)方法太笨了,也太麻煩了。建議使用第二種方法。
例如:
string str = "所有<100公所的豬";
str.Replace(<, <);//替換為全角,不過,更有< < > > & 這些符號(hào)哦,一個(gè)個(gè)替換就是了,
解決辦法二:更改MagicAjax原始碼,不用怕,^-^, 這個(gè)更改并不難,首先到官方網(wǎng)站下載。net2.0的原始碼下來,打開項(xiàng)目,找到一個(gè)為 AjaxCallHelper.cs 的類,這類的功能還真是強(qiáng)啊。在里面找到方法為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();
}
把這些特別字符在顯示的時(shí)候替換不OK了,最后Release項(xiàng)目,問題解決了。哦也!
讓MagicAjax支持中文!問題解決并不難,網(wǎng)上已有非常多解決的相關(guān)文章,這里就不多說了,不過在項(xiàng)目中這個(gè)方法其實(shí)也蠻好用的,
AjaxCallHelper.WriteAlert("數(shù)據(jù)保存成功!")//當(dāng)一按扭為ajaxpanel內(nèi)時(shí),注冊(cè)javascript 的alert腳本是彈不出消息框的,用這個(gè)彈出來就行了,看懂這個(gè)框架機(jī)制的你就知道他為什么彈出不消息框了,hoho。
AjaxCallHelper.Write("editGrid();")//調(diào)用指定的javascript方法記得加上分號(hào)哦。
http://www.cnblogs.com/NetFans/archive/2007/01/14/620161.html