[英]How can I request parameters in c# controller from Angular? (no url concatenation)
我有一个一般性问题,我似乎无法在其他主题中找到任何答案。 所以我将在这里展示我的代码:这是我的 register.component.ts:
email = this.registerForm.controls['email'].value;
password = this.registerForm.controls['password'].value;
// call RegisterController
this.http.post('api/register', params).subscribe(params => {
this.router.navigate(['']); // redirect to login
},
error => console.log(error)
);
这是我的 C# Controller:
[Route("api/register")]
[HttpPost]
public void Register(string email = "", string password = "")
{
email = Request.Query["email"].ToString().Trim();
password = Request.Query["password"].ToString().Trim();
...
}
我的问题是:如何将 email 的输入值和密码从 angular 传递到 c#? 每次在我的 controller 中,我都会得到“”。
你可以做的是使用HttpParams
这似乎更干净的解决方案来解决你的问题
let httpParams = new HttpParams()
.append("email", "test@test.com")
.append("password", "Password1");
最后你会得到这个代码
email = this.registerForm.controls['email'].value;
password = this.registerForm.controls['password'].value;
let httpParams = new HttpParams()
.append("email", email)
.append("password", password);
// call RegisterController
this.http.post('api/register', httpParams).subscribe(params => {
this.router.navigate(['']);
},
error => console.log(error)
);
只需在您的后端创建一个 model 以将其传递给您的 controller,类似于:
public class RegisterModel {
public string Email { get; set; }
public string Password { get; set; }
}
在你的 controller 你通过它
public void Register([FromBody]RegisterModel model)
{
email = model.Email;
password = model.Password;
...
}
请注意,我们正在添加[FromBody]
属性来告诉 asp 内容不是作为 url 参数的一部分出现的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.