通常情況下,我們在List列表頁面,會包含Create,Edit,Delete等操作按鈕,
而通常的處理是:
Create按鈕跳轉到DataCreate.aspx
Edit按鈕跳轉到DataEdit.aspx?DataId=1&DataName=abc
一般在后台通過 string dataName = Request.QueryString["DataName"]的方式 來獲取傳入的參數
然后 var DataModel = getModelByDataName(dataName)
在DataId=1&DataName=abc時,沒有特殊字符,參數接收正確,一切處理順利
但在DataId=1&DataName=abc~!@#$%^&* 時,因為包含了&等特殊字符 ,參數接收錯誤
常用處理如下:
在前台js,用escape 進行處理
DataEdit.aspx?DataId=1&DataName=escape(abc~!@#$%^&*)
后台正常接收就可以了
在后台c#,用Server.UrlEncode 進行處理
"DataEdit.aspx?DataId=1&DataName=" + Server.UrlEncode(Request.QueryString["DataName"].ToString();
進行跳轉等處理