2015-01-26 2 views
0

Должны ли мы быть в состоянии следить за вызовом AJAX в отладчике, чтобы узнать, что происходит? Потому что по какой-то причине кажется, что звонок не собирается туда, куда он должен идти.Выполнение действия контроллера при нажатии кнопки на клиенте

При пошаговом через программу, после url: '@URL.Action("DidItWork", "Home") вызова, он идет к:

public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 

Вслед за несколькими другими методами; однако, похоже, что он не попадает ни в одну из строк кода в методе действий DidItWork() (на основе точек останова).

я затем получить Error: Not Found. Status: error. Console: [object Object]

Мысли/предложения о том, как решить эту проблему с @ Url.Action вызова не заходящим от любых точек останова в методе действий DidItWork()? Потому что вызов @ Url.Action не достигает эффекта желания достижения SendEmailAsync().

Следующий код в _Layout.cshtml

@*script for someone who presses the send/email button*@ 
<script> 
    $("#sendButton").click(function() { 
     alert("Send button pressed"); 
     $.ajax({ 
      url: '@Url.Action("DitItWork", "Home")', 
      success: function (result) { 
       alert("Success. It worked: " + result); 
      }, 
      error: function(xhr, status, errorThrown) { 
       alert("Sorry, there was a problem! Error: " + errorThrown + ". Status: " + status + ". Console: " + xhr); 
       console.log("Hello"); 
       console.log("Error: " + errorThrown); 
       console.log("Status: " + status); 
       console.dir(xhr); 
       console.log("Good-bye"); 
      }, 
     }); 
     return false; 
    }); 
</script> 

Следующий код в HomeController.cs

[AllowAnonymous] 
public async Task<ActionResult> DidItWork() 
{ 
     var dash = "dash equals nash"; 

     var manager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
     var user = new ApplicationUser { UserName = "test2 username2", Email = "[email protected]" }; 
     var result = await manager.CreateAsync(user, "passwordGoesHere1!"); 
     if (result.Succeeded) 
     { 
      await manager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account"); 

      return View(); 
     } 

     //AddErrors(result); 
     return View();  
} 
+1

Ваше действие Имя в URL-адресе ajax неверно !!!!!!! –

+0

Цените свою помощь - всегда приятно иметь дополнительный набор глаз – NateHill

ответ

1

Ваше имя действия является Di d ItWork, но вы отправляете запрос на Di т ItWork. Но для функции установите какой-либо инструмент или используйте уже существующий в своем веб-браузере, чтобы проверить, куда отправляется запрос (например, я использую firebug в firefox).

2

Пожалуйста, проверьте имя действия, что вы звоните с Ajax. Он отличается от вашего имени действия в вашем контроллере. Также проверьте, загружен ли jquery перед вызовом ajax. Надеюсь, это поможет.

Также проверьте, если какие-либо фильтры используются в

public static ApplicationDbContext Create() 
Смежные вопросы