如何从 Angular 请求 c# 控制器中的参数? (没有 url 串联)
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# 控制器:
[Route("api/register")]
[HttpPost]
public void Register(string email = "", string password = "")
{
email = Request.Query["email"].ToString().Trim();
password = Request.Query["password"].ToString().Trim();
...
}
我的问题是:如何将电子邮件和密码的输入值从 angular 传递到 c#?每次在我的控制器中我都会得到“”。
你可以做的是使用 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)
);
您可以在 asp.net webapi 中创建一个模型,并将来自 angular 的数据作为 json(内容类型:application/json)发送,并且让 web api 格式化程序将其反序列化为您的模型对象
只需在您的后端创建一个模型以将其传递给您的控制器,例如:
public class RegisterModel {
public string Email { get; set; }
public string Password { get; set; }
}
然后在你的控制器中传递它
public void Register([FromBody]RegisterModel model)
{
email = model.Email;
password = model.Password;
...
}
请注意,我们正在添加 [FromBody]
属性以告知 asp 该内容不会作为 url 参数的一部分出现
我有一个一般性问题,我似乎无法在其他主题中找到任何答案。 所以我会在这里展示我的代码: 这是我的 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# 控制器:
[Route("api/register")]
[HttpPost]
public void Register(string email = "", string password = "")
{
email = Request.Query["email"].ToString().Trim();
password = Request.Query["password"].ToString().Trim();
...
}
我的问题是:如何将电子邮件和密码的输入值从 angular 传递到 c#?每次在我的控制器中我都会得到“”。
你可以做的是使用 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)
);
您可以在 asp.net webapi 中创建一个模型,并将来自 angular 的数据作为 json(内容类型:application/json)发送,并且让 web api 格式化程序将其反序列化为您的模型对象
只需在您的后端创建一个模型以将其传递给您的控制器,例如:
public class RegisterModel {
public string Email { get; set; }
public string Password { get; set; }
}
然后在你的控制器中传递它
public void Register([FromBody]RegisterModel model)
{
email = model.Email;
password = model.Password;
...
}
请注意,我们正在添加 [FromBody]
属性以告知 asp 该内容不会作为 url 参数的一部分出现