#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, вы можете отправлять параметры несколькими способами.
- простой способ-добавить параметры в URL-адрес следующим образом:
multiCountryConfig() {
var multiCountry = "Test";
const URL = `/Home/MultiCountryConfiguration?multiCountry=${multiCountry}`
this.http.get(URL).subscribe(result => {
console.log(result)
}, error => {
console.log(error)
});
}
- Другим способом сделать это может быть использование параметров из 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: раздел исправить код