2016-02-18 3 views
0

Я изучаю Async/Await в MVC5. Я создал это демонстрационное приложение, но мой метод действий с контроллером не запускается. Его предоставление «Ресурс не найден». ошибка. Вот код.MVC Controller метод не набирается

  1. _Layout.cshtml вид

    @Html.ActionLink("ASYNC", "GetNames", "Async") 
    
  2. GetNames.cshtml вид

    @Html.ActionLink("Click Me", "GetFirstName", "Async", null, new{@class = "btn btn-primary" }) 
    @if (ViewBag.FName != null) 
    { 
        <p> 
        <label>@ViewBag.FName </label> 
        </p> 
    } 
    
  3. В файле 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 или с чем-то еще.

+0

Удалены ли вы F12, чтобы узнать, что именно вы вызываете, когда вы нажимаете кнопку? – aemorales1

+0

Как упоминал Ясен. Измените HttpPost на HttpGet или полностью удалите его. – MartijnK

ответ

6

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

Контроллер имеет способ GetFirstName, определяемый как HttpPost. Изменив это значение на HttpGet, убедитесь, что действие доступно для запросов GET.

+0

иногда пытаясь узнать больше, чтобы вы не замечали мелочи :) – vicky

Смежные вопросы