我如何通过" name + first@domain.com"作为asp.net web api方法的参数?加号自动替换为空格("名称为first@domain.com")
ASP.net 4.5
由于
答案 0 :(得分:4)
在调用方法之前使用HttpUtility.UrlEncode("name+first@domain.com")
。
并且HttpUtility.UrlDecode
在必要时解码字符串。
<强>更新强>
要从javascript调用web api方法并转义+,那么您可以使用:encodeURIComponent("name+first@domain.com")
解码使用System.Uri.UnescapeDataString(escapedParameter);
答案 1 :(得分:0)
试试这样。
更改api方法的URI。
[Route("RegisterUser?email={email}")]
现在相应地更改方法的url。
调用方法的新网址为http://api/name_Controler/RegisterUser?email=escape('name+first@domain.com')
答案 2 :(得分:0)
当然你正在编码网址吗?我有类似的情况,这个问题是间歇性的。任何其他角色都可以使用HttpUtility.UrlEncode处理(&#34;!&amp; 〜 ^((&#34;);
但是+(加号)并不适合那里,正如我所说的那样有时会发生。所以我决定切换到GetQueryNameValuePairs
var queryParams = this.Request.GetQueryNameValuePairs().ToList();
var userId = queryParams.Single(q => q.Key.ToLower() == "userid").Value;
var password = queryParams.Single(q => q.Key.ToLower() == "password").Value;
你仍然需要编码