我是ASP.NET MVC的半新手.我正在构建一个内部用于我公司的应用程序.
场景是这样的:有两个Html.ListBox.一个包含所有数据库信息,另一个最初为空.用户将数据库列表框中的项添加到空列表框中.
每次用户添加命令时,我都会在我的EditController中调用一个调用ActionResult“AddCommand”的js函数.在控制器中,添加的选定项目将保存到另一个数据库表中.
function Add(listBox) {
…
//skipping initializing code for berevityvar url = “/Edit/AddCommand/” + cmd;
$.post(url);
}
因此,当’cmd’是具有’/’,’:’,’%’,’?’等的项目(某种特殊字符)时会出现问题
所以我想知道的是,逃避这些角色的最佳方法是什么?现在我正在检查数据库的列表框项目的文本,并重建字符串,然后在Controller中,我正在使用该构建的字符串并将其恢复到其原始状态.
因此,例如,如果他们添加的项目是“猫/狗”,我将’Cats [SLASH] Dogs’发布到控制器,并在控制器中将其更改回’Cats / Dogs’.
显然这是一个可怕的黑客,所以我必须遗漏一些东西.任何帮助将不胜感激.
解决方法
为什么不把它从URI中取出来呢?你正在做一个POST,所以把它放在表格中.
如果您的行动是:
public ActionResult AddCommand(string cmd) { // ...
…然后你可以这样做:
var url = "/Edit/AddCommand"; var data = { cmd: cmd }; $.post(url,data);
……并且一切都将“正常工作”而没有单独的编码步骤.