post方法不起作用,没有任何错误

时间:2019-07-24 02:06:49

标签: angular asp.net-core-webapi

我正在使用angular和asp.net核心webapi创建一个简单的操作,当我尝试使用值来发布值时,它不起作用。

发布组件:

<div class="col-md-4">
<form (ngSubmit)="validateuser()" #homeForm="ngForm">
<div class="form-group">
  <label for="address">User Name</label>
  <input type="text "  min="0" class="form-control" [(ngModel)]="datas.username" name="username" required>
</div>

<div class="form-group">
  <label for="address">Password</label>
  <input type="text "  min="0" class="form-control" [(ngModel)]="datas.password" name="password" required>
</div>
</form>
<div class="form-group">
  <button type="submit"    class="btn btn-success" [disabled]="!homeForm.form.valid">login</button>
</div>
</div>

服务:

import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { ViewEncapsulation } from '@angular/core';
import { UrlResolver } from '@angular/compiler';
import { Router } from '@angular/router';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css'],
  encapsulation: ViewEncapsulation.None
})
export class LoginComponent implements OnInit {
  datas= {};

  constructor(private http: HttpClient, private router: Router) { }

  ngOnInit() {
  }
  validateuser() {
    this.http.post('http://localhost:7254/api/user/token',this.datas)
      .subscribe(res => {
        console.log(res);
        this.router.navigate(['/homes']);


        }, (err) => {
          this.router.navigate(['/login']);
        }

      );
      }
    }

API控制台:

namespace WebAPI.Controllers
{
    [Produces("application/json")]
    [Route("api/User")]
    public class UserController : Controller
    {
        private readonly ModelItemContext _context;

        public UserController(ModelItemContext context)
        {
            _context = context;
        }

        [HttpPost("{token}")]
        public ActionResult CreateToken([FromBody] User item_2)
        {
            var item_1 = _context.User.FirstOrDefault(t => t.UserName == item_2.UserName && t.Password == item_2.Password);
            if (item_1 == null)
            {
                return NotFound();
            }
            _context.User.Update(item_1);
            _context.SaveChanges();
            return new NoContentResult();
        }


    }
}

当我尝试调试点时。该值未命中角度服务文件。这有什么问题。请给我一个想法。同样的方法也适用于创建用户。但当我使用密码和用户名检查时不起作用。

1 个答案:

答案 0 :(得分:2)

问题是您的数据变量是空对象。因此,如下所示声明 data变量

datas: any = {
  username: '',
  password: ''
};

UI中的帖子网址应为: 'http://localhost:7254/api/User/token'

并在API中更改您的 CreateToken 方法,

[Route("token")]
public ActionResult CreateToken([FromBody]User item_2)
{

}

注意:在HTML中,将按钮添加到表单标签中。

注意:API中的用户模型应与角度模型匹配。