使用 jQuery 数据属性将参数传递给 Web api 控制器
Pass parameters to web api controller with jQuery data attribute
我有这个 jQuery 电话:
jQuery.ajax({
type: "POST",
url: "http://localhost:5832/api/Login/Post",
data: JSON.stringify({ username: 'user12', password: '1234' }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
}
});
调用此网站 api 控制器操作:
[System.Web.Http.AcceptVerbs("POST")]
[System.Web.Http.HttpPost]
public HttpResponseMessage Post(string username, string password)
{
string authenticationToken = "";
authenticationToken = hpl.LoginUser(username, password);
//Some other code
return Request.CreateResponse(HttpStatusCode.OK, authenticationToken);
}
我正在尝试提交具有数据属性的参数,但未触发调用。
当我将 url 更改为:
http://localhost:5832/api/Login/Post?username=1&password=2
我可以进行控制器操作。
如何将参数作为 jquery 调用的数据属性的一部分而不是查询字符串参数传递?
ASP.Net Web API 不支持请求正文中的多个参数。
您只能使用 FromBody
属性发送一个参数,因此不要使用多个参数,只需使用一个包含您需要的任何 属性 的对象:
public class LoginModel {
public string username { get; set; }
public string password { get; set; }
}
[System.Web.Http.HttpPost]
public HttpResponseMessage Post([FromBody] LoginModel loginModel)
{
string authenticationToken = "";
authenticationToken = hpl.LoginUser(loginModel.username, loginModel.password);
//Some other code
return Request.CreateResponse(HttpStatusCode.OK, authenticationToken);
}
顺便说一句:AcceptVerbs("POST")
和 HttpPost
属性是多余的,使用其中之一,但不要同时使用。
我有这个 jQuery 电话:
jQuery.ajax({
type: "POST",
url: "http://localhost:5832/api/Login/Post",
data: JSON.stringify({ username: 'user12', password: '1234' }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
}
});
调用此网站 api 控制器操作:
[System.Web.Http.AcceptVerbs("POST")]
[System.Web.Http.HttpPost]
public HttpResponseMessage Post(string username, string password)
{
string authenticationToken = "";
authenticationToken = hpl.LoginUser(username, password);
//Some other code
return Request.CreateResponse(HttpStatusCode.OK, authenticationToken);
}
我正在尝试提交具有数据属性的参数,但未触发调用。
当我将 url 更改为: http://localhost:5832/api/Login/Post?username=1&password=2
我可以进行控制器操作。
如何将参数作为 jquery 调用的数据属性的一部分而不是查询字符串参数传递?
ASP.Net Web API 不支持请求正文中的多个参数。
您只能使用 FromBody
属性发送一个参数,因此不要使用多个参数,只需使用一个包含您需要的任何 属性 的对象:
public class LoginModel {
public string username { get; set; }
public string password { get; set; }
}
[System.Web.Http.HttpPost]
public HttpResponseMessage Post([FromBody] LoginModel loginModel)
{
string authenticationToken = "";
authenticationToken = hpl.LoginUser(loginModel.username, loginModel.password);
//Some other code
return Request.CreateResponse(HttpStatusCode.OK, authenticationToken);
}
顺便说一句:AcceptVerbs("POST")
和 HttpPost
属性是多余的,使用其中之一,但不要同时使用。