刚开始使用WebApi并遇到多个问题。阅读大量信息,但可能缺少一些概念。
在我的控制器中:
[HttpPost]
[ActionName("ChangePassword")]
public string ChangePassword([FromBody]string username, [FromBody] string newpassword, [FromBody]string oldpassword)
{
return new Models.User() { Username = username, NewPassword = newpassword, OldPassword = oldpassword }.ChangePassword();
}
路由::
config.Routes.MapHttpRoute(
name: "DefaultApiController",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我正在从JQUERY调用此服务
$.ajax({
type: "POST",
url: "http://XXXXX/api/service/cHANGEPASSWORD",
async: true,
data: source,
success: function (result) {
alert(result);
},
error: function (jqXHR, exception) {
}
现在,我已经在WebAPi中安装了一个调试器,并且当我运行代码时...它没有被命中,而且我也没有从Ajax中获得任何错误错误函数。
注意:: HTML页面和WEBAPI都在同一个项目中。所以,他们在这里没有跨域问题
答案 0 :(得分:0)
您的源变量未显示,但更改密码函数的格式应为:
username,[FromBody] string newpassword,[FromBody] string oldpassword
var source = { username : $('#username').val(), newpassword : $('#newPassword').val(), oldpassword: $('#oldPassword').val() };
$.ajax({
type: "POST",
url: "http://XXXXX/api/service/ChangePassword",
async: true,
data: source,
success: function (result) {
alert(result);
},
error: function (jqXHR, exception) {
}
您可以更改项目ID / etc以满足您的需求..
答案 1 :(得分:0)
创建重置密码视图模型发布通过请求
传输数据时这是安全的 [HttpPost]
[ActionName("ChangePassword")]
public string ChangePassword(RestPasswordViewModel vm)
{
return new Models.User() { Username = vm.username, NewPassword = vm.newpassword, OldPassword = vm.oldpassword }.ChangePassword();
}
public class RestPasswordViewModel
{
public string username {get;set;}
[DataType(DataType.Password)]
public string newpassword{get;set;}
[DataType(DataType.Password)]
public string oldpassword {get;set;}
}
OR用户获取方法
[HttpGet]
[ActionName("ChangePassword")]
public string ChangePassword(string username, string newpassword,string oldpassword)
{
return new Models.User() { Username = username, NewPassword = newpassword, OldPassword = oldpassword }.ChangePassword();
}
如果这回答了您的问题,请在左侧检查。