我必须通过ASP.NET MVC中的AJAX将复杂的字符串从我的视图发送到特定的控制器操作。
字符串需要包含各种字符,例如< ,> ,& ,“,”。
我在javascript中使用以下代码:
var request = new Sys.Net.WebRequest(); request.set_url("/Controller/Action?Param=" + str) ; // str is the string to be sent request.set_httpVerb("POST"); request.invoke();
但是当我运行页面时,AJAX请求无法到达控制器中的操作。
有人能说出如何实现这个目标吗?
答案 0 :(得分:1)
var request = new Sys.Net.WebRequest();
request.set_url("/Controller/Action?Param=" + encodeURIComponent(str)) ; // str is the string to be sent
request.set_httpVerb("POST");
request.invoke();
答案 1 :(得分:1)
我认为你正在寻找Server.UrlEncode
。或者只是在javascript中使用encodeURI
/ encodeURIComponent
。
在将原始数据附加到URL之前对其进行编码。
答案 2 :(得分:1)
在global.asax中创建你的删除方法,就像这样
routes.MapRoute("Delete", //Route name
"ControllerName/MethodName/{id}",
new { controller = "controller Name", action = "Method Name", id = 1 }
答案 3 :(得分:0)
request.set_url("/Controller/Action?Param='" + str+"'"+) ;
答案 4 :(得分:0)
我会推荐你jQuery。 Microsoft AJAX就像石器时代一样,在ASP.NET MVC中完全弃用。我的意思是,如果你正在研究一些遗留的ASP.NET WebForms应用程序,你会有一个借口,但在ASP.NET MVC中没有任何借口。所以:
$.ajax({
url: '<%= Url.Action("Action", "Controller")',
type: 'POST',
data: { Param: str },
success: function(result) {
// handle the success
}
});
此外,如果您需要发送<
,>
等特殊字符,则必须确保使用[ValidateInput(false)]
属性修饰相应的控制器操作:
[ValidateInput(false)]
public ActionResult Action(string Param)
{
...
}
如果您使用的是ASP.NET 4.0,则可能还需要在web.config中设置以下内容以使其正常工作:
<httpRuntime requestValidationMode="2.0" />