最近在处理MVC时,遇到要将特殊字符,或者XML格式的数据传递到后台,但是后台解析发现无法识别,处理有误。
可以通过以下方式处理。
1.Javascript 端处理主要对要传递的数据通过escape函数进行处理即可 escape(string)
但是要注意
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。语法escape(string)参数描述string必需。要被转义或编码的字符串。返回值已编码的 string 的副本。 其中某些字符被替换成了十六进制的转义序列。说明该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。 其他所有的字符都会被转义序列替换。提示和注释提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
$.post("../Home/Test",{ ModelName: ModelName, ID: ID, Content: escape($("#Test").val()) }, function (data){///后台返回数据} }
在控制器中主要是通过Server.UrlDecode进行解码即可。
public ActionResult Test(string ModelName,string ID,string Content){ string Content=Server.UrlDecode(Content); return null;}