我正在使用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();
}
}
}
当我尝试调试点时。该值未命中角度服务文件。这有什么问题。请给我一个想法。同样的方法也适用于创建用户。但当我使用密码和用户名检查时不起作用。
答案 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中的用户模型应与角度模型匹配。