2017-05-15 2 views
0

J'essaie d'appeler une méthode d'action sans affecter la vue. La parole est le procédé d'action suivantvoid L'appel ActionMethod utilisant la requête ajax post avec verificationtoken écrase la page, la rendant vide. Comment venir?

[HttpPost] 
[AllowAnonymous] 
[ValidateAntiForgeryToken] 
public void Index(LoginModel login)//, string returnUrl) 
{ 
    if (ModelState.IsValid && 
     System.Web.Security.Membership.ValidateUser(login.UserName, login.Password)) 
    { 
     FormsAuthentication.SetAuthCookie(login.UserName, login.RememberMe); 
     login.JavascriptToRun = "updateForm()"; 
    } 
// handle error 
} 

en faisant cela

$('#loginBtn').click(function() { 
     var success = false; 
     var form = $('#loginForm'); 
     var token = $('input[name="__RequestVerificationToken"]', form).val(); 
     $.ajax({ 
      url: $(this).data('url'), 
      type: 'POST', 
      data: { 
       __RequestVerificationToken: token, 
       LoginModel: "@Model" 
      }, 
      success: function (result) { 
       alert("logged in"); 
      } 
     }); 
    }); 

La forme est une vue séparée qui contient également au-dessus de l'extrait JS-code.

Tout fonctionne correctement, sauf que la page entière est rechargée et que l'actionmethod est vide, cela devient vide. Je ne veux pas que quelque chose arrive à la page Web, seulement pour changer l'extrait de code de js stocké dans un modèle qui BTW est une fonction vide dès maintenant.

J'ai regardé des publications liées telles que ASP.NET MVC - How to call void controller method without leaving the view? mais je ne suis pas le plus sage. Je me sens comme si je frappais un mur et la contribution des autres serait très appréciée. À votre santé!

+0

peut vous montrer la vue? – Usman

Répondre