как передать значения . сетевой контроллер в угловой

#c# #angular #typescript #asp.net-core #angular12

Вопрос:

Что я пытаюсь, так это передать параметр контроллеру из typescript. Но это не переходит в метод.

ниже приведен мой код машинописи,

 multiCountryConfig() {

var multiCountry = "Test";

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

}
 

ниже приведен мой код метода домашнего контролера,

     [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");
    }
 

Я не знаю, правильно ли это. Пожалуйста, кто-нибудь, направьте меня в этом. Спасибо.

Комментарии:

1. Вы пытались отладить его на вкладке «Сеть» вашего браузера? (проверьте запрос клиента)

2. И отправьте тестовый запрос от почтальона в свой API и сравните запросы из приложения Angular.

Ответ №1:

Что я пытаюсь, так это передать параметр контроллеру из typescript. Но это не переходит в метод.

Получаю ту же ошибку 404. ПОЛУЧИТЬ https://localhost:44335/Home/MultiCountryConfiguration?multiCountry=Test 404

Чтобы устранить проблему, пожалуйста, попробуйте изменить метод действия, как показано ниже.

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

Кроме того, пожалуйста , убедитесь, что ваш серверный сайт размещается на https://localhost:44335 , а не на другом порту или http.

Примечание: ваш код интерфейса Angular выглядит нормально, он может помочь выполнить http-запросы и передать данные через строку запроса. Если маршрутизация для вашего бэкенда в порядке, она должна работать так, как ожидалось.

Запрос от интерфейса

введите описание изображения здесь

Способ внутреннего действия

введите описание изображения здесь

Ответ №2:

Когда вы используете метод 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 . Пожалуйста, проверьте, где запущена ваша веб — служба, и добавьте правильный путь.

Комментарии:

1. Получаю ту же ошибку 404. ПОЛУЧИТЬ localhost:44335/Главная/… 404

2. Попробуйте использовать postman, ошибка говорит, что он не находит указанный вами маршрут. Пожалуйста, зарегистрируйте его правильно.

Ответ №3:

  [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: раздел исправить код