Я изучаю Async/Await в MVC5. Я создал это демонстрационное приложение, но мой метод действий с контроллером не запускается. Его предоставление «Ресурс не найден». ошибка. Вот код.MVC Controller метод не набирается
_Layout.cshtml вид
@Html.ActionLink("ASYNC", "GetNames", "Async")
GetNames.cshtml вид
@Html.ActionLink("Click Me", "GetFirstName", "Async", null, new{@class = "btn btn-primary" }) @if (ViewBag.FName != null) { <p> <label>@ViewBag.FName </label> </p> }
В файле AsyncController.cs
public ActionResult GetNames() { return View(); } [HttpPost] public async Task<ActionResult> GetFirstName() { var r = await GetFirstNameFromDB(); ViewBag.FName = r; return View("GetNames"); } public async Task<string> GetFirstNameFromDB() { try { var res = await Task.Run(() => { Thread.Sleep(3000); return "TestFName"; }); return res; } catch (Exception) { return "Error in getting FirstName"; } }
Теперь, когда я нажимаю кнопку ссылки на действие, чтобы позвонить GetFirstName
, отображается The resource cannot be found.
. Я не уверен, связано ли это с действием async
или с чем-то еще.
Удалены ли вы F12, чтобы узнать, что именно вы вызываете, когда вы нажимаете кнопку? – aemorales1
'ActionLink' создает якорный тег' '. Нажатие на них генерирует запрос GET. Однако ваше действие отмечено '[HttpPost]'. – Jasen
Как упоминал Ясен. Измените HttpPost на HttpGet или полностью удалите его. – MartijnK