Angular 控制器不使用 $http 将值传递给 web api 方法
Angular controller doesn't pass value to web api method with $http
这是我的 angularjs 代码:
var uname = resetPasswordRequestData.email
var request = $http({
method: "post",
url: workModule.config.Config.CommonUrl + "api/ResetPasswordRequest",
data: uname
});
网络api代码:
public class PerformPasswordResetController : ApiController
{
public int PerformResetPassword([FromBody]string uname)
{
CrmUser contact = null;
if (ModelState.IsValid)
{
try
{
contact = new PasswordResetProvider().GetUserByName(uname);
}
catch (Exception ex)
{
return 1;
}
}
}
我的问题是,当我从 Fiddler 进行调用时,它可以正常工作,但是当我 运行 代码时,它很好地路由到网络 api 方法,但在网络 api 控制器中 "uname" 参数为空。当我从 fiddler 传递一些数据时,它将该数据传递给 "uname"(在网络中 api 控制器 uname 不为空)
谁能帮帮我?
我强烈建议您使用模型 class 在您的服务器上接收数据。
像这样:
public class UserModel {
public string UserName { get; set; }
}
public class PerformPasswordResetController : ApiController
{
public int PerformResetPassword([FromBody]UserModel user)
{
...Do your stuff
}
}
在您的 angular 代码上:
var model = {
userName: resetPasswordRequestData.email
};
var request = $http({
method: "post",
url: workModule.config.Config.CommonUrl + "api/ResetPasswordRequest",
data: model
});
此外,如果您不想(或不能)更改您的服务器代码,请试试这个:
var uname = resetPasswordRequestData.email
var request = $http({
method: "post",
url: workModule.config.Config.CommonUrl + "api/ResetPasswordRequest",
data: {
uname: uname
}
});
这是我的 angularjs 代码:
var uname = resetPasswordRequestData.email
var request = $http({
method: "post",
url: workModule.config.Config.CommonUrl + "api/ResetPasswordRequest",
data: uname
});
网络api代码:
public class PerformPasswordResetController : ApiController
{
public int PerformResetPassword([FromBody]string uname)
{
CrmUser contact = null;
if (ModelState.IsValid)
{
try
{
contact = new PasswordResetProvider().GetUserByName(uname);
}
catch (Exception ex)
{
return 1;
}
}
}
我的问题是,当我从 Fiddler 进行调用时,它可以正常工作,但是当我 运行 代码时,它很好地路由到网络 api 方法,但在网络 api 控制器中 "uname" 参数为空。当我从 fiddler 传递一些数据时,它将该数据传递给 "uname"(在网络中 api 控制器 uname 不为空)
谁能帮帮我?
我强烈建议您使用模型 class 在您的服务器上接收数据。
像这样:
public class UserModel {
public string UserName { get; set; }
}
public class PerformPasswordResetController : ApiController
{
public int PerformResetPassword([FromBody]UserModel user)
{
...Do your stuff
}
}
在您的 angular 代码上:
var model = {
userName: resetPasswordRequestData.email
};
var request = $http({
method: "post",
url: workModule.config.Config.CommonUrl + "api/ResetPasswordRequest",
data: model
});
此外,如果您不想(或不能)更改您的服务器代码,请试试这个:
var uname = resetPasswordRequestData.email
var request = $http({
method: "post",
url: workModule.config.Config.CommonUrl + "api/ResetPasswordRequest",
data: {
uname: uname
}
});