如何将值传递给 . Angular 中的网络控制器

how to pass values to . net controller in Angular

我正在尝试的是从打字稿向控制器传递一个参数。但它没有传递给方法。

下面是我的打字稿代码,

multiCountryConfig() {

var multiCountry = "Test";

this.http.get('/Home/MultiCountryConfiguration', {
  params: {
    multiCountry: multiCountry,
  }
}).subscribe(result => {
  console.log(result)
}, error => {
  console.log(error)
});

}

下面是我的homecontroller方法代码,

    [HttpGet]
    public IActionResult MultiCountryConfiguration(string multiCountry)
    {
        var key = "test";
        var value = "en-gb";
        CookieOptions options = new();
        options.Expires = DateTime.Now.AddHours(1);
        HttpContext.Response.Cookies.Append(key, value, options);

        return Ok("created");
    }

不知道对不对。请有人指导我。谢谢。

使用get方法时,可以通过多种方式发送参数。

  1. 简单的方法是在 URL 中添加参数,如下所示:
multiCountryConfig() {

var multiCountry = "Test";
const URL = `/Home/MultiCountryConfiguration?multiCountry=${multiCountry}`
this.http.get(URL).subscribe(result => {
  console.log(result)
}, error => {
  console.log(error)
});

}
  1. 另一种方法是使用 HTTPModule 中的参数
multiCountryConfig() {

 let params = new HttpParams();
    params = params.append('_page', 1);
    params = params.append('_limit', 10); 

const multiCountry = "Test";

this.http.get("/Home/MultiCountryConfiguration", {params: params}).subscribe(result => {
  console.log(result)
}, error => {
  console.log(error)
});

}
  

但是您在 URL 中使用的路径似乎不完整,您可能需要添加域才能正常工作并请求资源。您的 .net 服务必须在特定端口和 IP 地址上 运行,例如:http://localhost:8080/Home/MultiCountryConfiguration。请检查您的 Web 服务在哪里 运行 并添加正确的路径。

 [HttpGet]   
public IActionResult MultiCountryConfiguration([FromBody]string multiCountry)
{
    var key = "test";
    var value = "en-gb";
    CookieOptions options = new();
    options.Expires = DateTime.Now.AddHours(1);
    HttpContext.Response.Cookies.Append(key, value, options);
    return Ok("created");
}
  • 编辑 #1:修复代码部分

What I am trying is to pass a parameter to the controller from typescript. But it's not passing to method.

Getting the same 404 error. GET https://localhost:44335/Home/MultiCountryConfiguration?multiCountry=Test 404

要解决此问题,请尝试修改如下操作方法。

[HttpGet("/Home/MultiCountryConfiguration")]
public IActionResult MultiCountryConfiguration([FromQuery]string multiCountry)
{
    //...

此外,请确保您的后端站点托管在 https://localhost:44335,而不是其他端口或 http。

注意:您的 Angular 前端代码似乎没问题,它可以帮助发出 http 请求并通过查询字符串传递数据。如果您的后端路由正常,它应该会按预期工作。

来自前端的请求

后端操作方法