Я создаю простой маленький веб-сайт, который взаимодействует с веб-API, который позволяет пользователям иметь базу данных emus.В настоящее время я работаю над действием PUT в контроллере.Сначала пут идет от действия, которое просто перенаправляет к новому представлению.Затем это представление запрашивает у пользователя информацию и возвращает ее в модель.Затем второе действие должно обрабатывать информацию и вызывать API.
Первое и второе Action имеют одинаковые имена, поэтому второе действие, обрабатывающее запрос API, имеет тег [HttpPut] сверху.Однако, если у него есть этот тег, то представление никогда не переходит ко второму действию - оно просто перезагружает страницу, когда я нажимаю «отправить».Однако, если я добавлю [HttpPost], он будет работать нормально.
Я уже пытался изменить конфигурацию в IIS Express, но безрезультатно.
Вот код для представления:
@model HelloEmuWebsite.Models.EmuItem
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(x => x.SearchName)
@Html.TextBoxFor(x => x.SearchName)
</div>
<div>
@Html.LabelFor(x => x.Name)
@Html.TextBoxFor(x => x.Name)
</div>
<div>
@Html.LabelFor(x => x.Age)
@Html.TextBoxFor(x => x.Age)
</div>
<div>
@Html.LabelFor(x => x.Weight)
@Html.TextBoxFor(x => x.Weight)
</div>
<input type="submit" value="OK" />
}
А вот код в контроллере:
public IActionResult ChangeOneEmu()
{
return View(new EmuItem());
}
[HttpPut]
async public Task<IActionResult> ChangeOneEmu(EmuItem model)
{
var baseAddr = new Uri("my_url/api/values/");
var client = new HttpClient { BaseAddress = baseAddr };
var response = await client.PutAsJsonAsync(model.SearchName, model);
return RedirectToAction("Index");
}
А вот код запроса PUT в моем пользовательском API:
[HttpPut("{id}")]
public ActionResult<List<Models.EmuItem>> Put(string id, [FromBody] Models.EmuItem ChangedEmu)
{
if (ModelState.IsValid)
{
return MyEmus.ChangeEmu(id, ChangedEmu);
}
return BadRequest(ModelState);
}
Почемуэто происходит?Как я могу это исправить, чтобы он принимал [HttpPut]?В качестве альтернативы, есть ли лучший способ сделать это, не опираясь на теги [http]?Спасибо!