Не отправлять данные на сервер в Angular 6 и ASP.NET Core - PullRequest
0 голосов
/ 02 декабря 2018

Я создал сервер с ASP.NET Core и фронт с 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 Core:

[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();
}

1 Ответ

0 голосов
/ 03 декабря 2018

Проверьте пункты ниже по одному для вашей проблемы:

  1. Звоните subscribe для обработки Active.

    this.userService.Active(data).subscribe(result => {
      console.log(result);
    });
    
  2. Не уверен, какое значение для this.baseUrl, оно должно указывать на адрес контроллера.Если ваш контроллер подобен этому, вам нужно добавить api/sampledata к вашему базовому URL, или, если ваш базовый URL равен http://localhost:port, вам нужно изменить 'Active' на api/SampleData/Active.

    [Route("api/[controller]")]
    public class SampleDataController : Controller
    
  3. Не уверен, какой у вас заголовок, обычно вы передаете запрос как application/json, измените действие, как показано ниже, добавив FromBody.

    [HttpPost("Active")]
    public async Task<ActionResult> ActiveAccount([FromBody]User model)
    {
        //your code.
    }
    
  4. Обратите внимание на HttpPost, если вы звоните this.http.post<IUser> с угла, вам нужно использовать HttpPost при действии контроллера.

  5. Еще один момент, нажмите F12 в веб-браузере для отладки кода вашего клиента.

...