我是半新的ASP.NET MVC.我正在构建一个应用程序,在我的公司内部使用。
场景是这样的:有两个Html.Listbox。一个拥有所有的数据库信息,另一个则是本质上是空的。用户将将数据库列表框中的项添加到空列表框中。
每次用户添加命令时,我都会调用js函数,该函数在我的ActionResult中调用一个"AddCommand“。在控制器中,添加的选定项保存到另一个数据库表中。
下面是代码(每次添加项时都会调用该代码):
函数添加(列表框){. //跳过变量url = "/Edit/AddCommand/“+cmd的初始化代码; $.post(url); }
因此,当“cmd”是具有“/”、“:”、“%”、“?”等(某种特殊字符)的项时,就会出现问题。
所以我想知道的是,逃离这些角色的最好方法是什么?现在,我正在检查数据库的listbox项的文本,并重新构建字符串,然后在Controller中,我将获取构建的字符串并将其转换回原来的状态。
因此,例如,如果他们添加的项目是‘猫/狗’,我是张贴'CatsSLASHDogs‘到控制器,并在控制器中将其更改为’猫/狗‘。
显然这是一次可怕的黑客袭击,所以我肯定遗漏了什么。任何帮助都将不胜感激。
发布于 2010-02-19 16:47:03
在发送数据之前,您试过使用“转义”函数吗?这样,所有特殊字符都用安全字符编码。在服务器端,您可以解码该值。
function Add(listbox) { ...
//skipping initializing code for berevity
var url = "/Edit/AddCommand/" + escape(cmd);
$.post(url);
}
发布于 2010-02-19 16:46:33
使用javascript转义,它执行urlencoding。
然后,在C#中,您可以简单地解码它。
它看起来是这样的
function Add(listbox) { ...
//skipping initializing code for berevity
var url = "/Edit/AddCommand/" + escape(cmd);
$.post(url);
}
发布于 2010-02-19 16:47:05
您是否尝试过在调用中包装cmd变量以转义()?
https://stackoverflow.com/questions/2297977
复制相似问题