不向 Angular 6 和 ASP.NET Core 中的服务器发送数据
Not sending data to server in Angular 6 and ASP.NET Core
我创建了一个服务器 ASP.NET 核心和前端 Angular 6.
我在Angular中创建了一个表单 6.在组件中,我创建了一个向服务层发送数据的函数,向服务器发送数据,但是没有进入服务器。它没有显示任何错误。
有什么问题吗?是后台还是前台?
User.ts
changeActive(id:number) {
this.userService.GetUserById(id).subscribe((data) => {
if(data.isActive)
{
data.isActive = false;
} else {
data.isActive = true;
}
console.log("send data in service");
this.userService.Active(data);
})
}
Angular 服务:
public Active(user:IUser):Observable<IUser> {
console.log("we get data from component");
console.log(user);
return this.http.post<IUser>(this.baseUrl + 'Active', user, { headers: this.headers })
.pipe(tap((user: IUser) => this.log(`Active user w/ email=${user}`)),
catchError(this.handleError<IUser>('Active user'))
);
}
ASP.NET核心控制器:
[HttpPut("Active")]
public async Task<ActionResult> ActiveAccount(User model)
{
if (ModelState.IsValid)
{
var user = await _applicationUserManager.FindUserById(model.Id);
user.IsActive = model.IsActive;
await _applicationUserManager.UpdateAsync(user);
return Ok();
}
return BadRequest();
}
针对您的问题一一检查以下几点:
调用subscribe
处理Active
。
this.userService.Active(data).subscribe(result => {
console.log(result);
});
不知道this.baseUrl
的值是多少,应该是指向控制器地址。如果您的控制器是这样的,您需要将 api/sampledata
附加到您的基础 url,或者如果您的基础 url 是 http://localhost:port
,您需要将 'Active'
更改为api/SampleData/Active
。
[Route("api/[controller]")]
public class SampleDataController : Controller
不确定您的 header 是什么,一般来说,您将请求作为 application/json
传递,通过添加 FromBody
更改如下所示的操作。
[HttpPost("Active")]
public async Task<ActionResult> ActiveAccount([FromBody]User model)
{
//your code.
}
注意HttpPost
,如果你从angular调用this.http.post<IUser>
,你需要在控制器操作时使用HttpPost
。
还有一点,在浏览器中按F12
调试您的客户端代码。
我创建了一个服务器 ASP.NET 核心和前端 Angular 6.
我在Angular中创建了一个表单 6.在组件中,我创建了一个向服务层发送数据的函数,向服务器发送数据,但是没有进入服务器。它没有显示任何错误。
有什么问题吗?是后台还是前台?
User.ts
changeActive(id:number) {
this.userService.GetUserById(id).subscribe((data) => {
if(data.isActive)
{
data.isActive = false;
} else {
data.isActive = true;
}
console.log("send data in service");
this.userService.Active(data);
})
}
Angular 服务:
public Active(user:IUser):Observable<IUser> {
console.log("we get data from component");
console.log(user);
return this.http.post<IUser>(this.baseUrl + 'Active', user, { headers: this.headers })
.pipe(tap((user: IUser) => this.log(`Active user w/ email=${user}`)),
catchError(this.handleError<IUser>('Active user'))
);
}
ASP.NET核心控制器:
[HttpPut("Active")]
public async Task<ActionResult> ActiveAccount(User model)
{
if (ModelState.IsValid)
{
var user = await _applicationUserManager.FindUserById(model.Id);
user.IsActive = model.IsActive;
await _applicationUserManager.UpdateAsync(user);
return Ok();
}
return BadRequest();
}
针对您的问题一一检查以下几点:
调用
subscribe
处理Active
。this.userService.Active(data).subscribe(result => { console.log(result); });
不知道
this.baseUrl
的值是多少,应该是指向控制器地址。如果您的控制器是这样的,您需要将api/sampledata
附加到您的基础 url,或者如果您的基础 url 是http://localhost:port
,您需要将'Active'
更改为api/SampleData/Active
。[Route("api/[controller]")] public class SampleDataController : Controller
不确定您的 header 是什么,一般来说,您将请求作为
application/json
传递,通过添加FromBody
更改如下所示的操作。[HttpPost("Active")] public async Task<ActionResult> ActiveAccount([FromBody]User model) { //your code. }
注意
HttpPost
,如果你从angular调用this.http.post<IUser>
,你需要在控制器操作时使用HttpPost
。还有一点,在浏览器中按
F12
调试您的客户端代码。