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