2017-09-08 6 views
-2

J'ai un formulaire de connexion avec le lien "mot de passe oublié". En connexion soumettre J'appelle une autre action tout sur « mot de passe oublié » lien que je fais appel une autre action:ActionLink avec httpPost sur le même automate dans asp.net MVC 5

@Html.ActionLink("Forgot Password", "ForgotPassword", "Login", Model , new { @onclick = "return ValidateUsername();" }) 

Ce que je dois est d'envoyer comme POST au lieu de GET.

Ce que j'ai été une solution ASP.NET WebForm que j'ai presque complètement convertie en ASP.NET MVC. Un endroit où j'utilisais LinkButton. C'est le seul goulot de bouteille qui reste.


Edit:

Maintenant, je suis en utilisant JavaScript suivant

$("a.anchor").click(function (e) { 
    e.preventDefault(); // This will stop default behavior 
    var validate = ValidateUsername(); 
    if (validate) { 
     //alert(document.getElementById('usernameTextBox').value); 

     var str = document.getElementById('usernameTextBox').value; 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost/SSOMVC/Generic/ForgotPassword", 
      data: "data", 
      dataType: "text", 
      success: function (resultData) { 
       document.getElementById("usererror").textContent = resultData; 
      }, 
      failure: function (error) { 
      } 
     }); 
    } 
}); 

@Html.ActionLink("Forgot Password", null, null, Model, new { @class = "anchor" }) 


    public class GenericController : Controller 
    { 


     [HttpPost] 
     public ActionResult ForgotPassword(string data) 
     { 
      .... 
      return Content(callResponse); 
     } 
    } 

Je ne sais pas pourquoi je suis toujours obtenir des données nulles dans le contrôleur. ActionLink est converti en balise d'ancrage dans MVC

+0

Je ne pense pas que vous pouvez même faire cela avec actionlink; Si vous le pouvez, il sera dans l'une des surcharges –

+0

, vous pouvez lire ce sujet: https://stackoverflow.com/questions/2048778/asp-net-mvc-actionlink-and-post-method – arslanaybars

+0

La question n'est pas claire 'Model' vous pouvez passer dans le modèle directement dans ActionLink – umasankar

Répondre

2

Une balise d'ancrage envoie par défaut une demande GET.

Pour faire une demande Post, vous pouvez utiliser Ajax post call dans jquery.

@Html.ActionLink("Forgot Password", "ForgotPassword", "Login", Model , new { @onclick = "return ValidateUsername();" }, new { @class="anchor"}) 

    <script type="text/javascript"> 

    $("a.anchor").click(function(e){ 
     e.preventDefault(); // This will stop default behavior 
    $.ajax({ 
     type: "POST", 
     url: "<your classname/methodname>", 
     data: <your data>, 
     dataType: "text", 
     success: function(resultData){ 
      alert("Call Complete"); 
     }, 
     failure: funciton(error){ 
} 
}); 
    });  

</script> 
+0

Voulait éviter le code ajax/jquery –

+1

C'est la seule façon frère. MVC doit suivre les technologies sous-jacentes. Autoriser Anchorlinks à envoyer un message par défaut enfreindrait les règles. –

+0

Merci Dheeraj. –