将带有“+”的字符串值发布到操作会将值替换为空格

时间:2014-01-08 23:21:01

标签: c# .net asp.net-mvc asp.net-mvc-4 form-post

我已经对表单值为

的操作执行了HTTP POST
  

名= 123 + 456

但在我的行动中它来自:

  

123 456

因此模型绑定器用空格替换“+”。

[HttpPost]
public JsonResult MyAction(string name)
{

有什么想法吗?我是否必须创建自定义模型绑定器?

编辑:

这是在jquery中发布的,如下所示:

$.ajax({
...
data: "name=" + $('#signin-username').val()
...
});

我应该使用JSON.stringify或类似的东西吗?或者我必须手动编码?

2 个答案:

答案 0 :(得分:6)

+字符是通常在URL中编码空格的方式。尝试编码+

name=123%2B456

在您的jQuery中,使用encodeURIComponent方法:

$.ajax({
    ...
    data: "name=" + encodeURIComponent($('#signin-username').val())
    ...
});

答案 1 :(得分:1)

这是因为当数据是URL编码时,+表示之前有空格。

尝试设置一个不同的标头,声明它应该被解析为纯文本。

很抱歉没有告诉你标题但是从iPhone接听,所以目前资源非常有限。