发布带有&的内容时遇到问题喜欢“M& A是趋势......”,消息只停在M
MVC Web API
Viewcontroller
Web Api配置:
[HttpPost]
public IHttpActionResult Post([FromUri] CommentModel param)
{}
public class CommentModel
{
public int Id { get; set; }
public string Message { get; set; }
...
}
从angularJS调用它:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
答案 0 :(得分:2)
发送前对内容进行编码。
M&A is the trend....
编码后看起来像这样:
M&A is the trend....
答案 1 :(得分:1)
理想情况下,当您执行HTTP / POST时,您将数据作为实体发送,作为请求正文的一部分(不在URI中)。
也就是说,您的API控制器方法应如下所示:
public IHttpActionResult Post(CommentModel param)
你的HTTP / POST请求都应该包含一个Content-type: application/json
标头和一个JSON实体作为请求体的一部分(再次,不在URI !!!!)。
最后,如果您需要在您的资源URI或url-form编码数据中发送&符号作为数据,您需要对它们进行编码,因为&符号在此上下文中具有特定含义(它们是键值对分隔器)。如果您正在执行来自HTML5应用的请求,则可以使用Reference功能对参数进行编码,在.NET中,您可以使用encodeURIComponent(...)
POST动词是指创建资源,并将资源数据作为实体发送(可以是JSON,XML,url-form-encoded等等,但理想情况下不在URI中作为查询字符串)。