2012-06-05 3 views
0

J'écris une application ASP.NET qui nécessite que les utilisateurs se connectent à un serveur à l'aide d'une API externe. Je voudrais que les utilisateurs reçoivent un retour instantané, en utilisant Ajax, s'ils saisissent des identifiants de connexion non valides.Connexion Ajax avec validation côté serveur à l'aide d'ASP.NET

Mon point de vue

@using (Ajax.BeginForm("Login", "Login", null, new { id = "login-form" })) 
     { 
      <label> 
       User Name: @Html.TextBox("userName", "", new { @class = "input" }) 
      </label> 
      <label> 
       Password: @Html.Password("password", "", new { @class = "input" }) 
      </label> 
      <input type="submit" class="button" value="Login" /> 
      <div id="login-validate">Invalid Login!</div> 
     } 

Mon contrôleur

public ActionResult Login(string userName, string password) 
    { 
     // Returns true if connection is valid 
     if (RepoConnection.verifyAndBindConn(userName, password)) 
     { 
      return Index(); // Redirect to home page, logged in as new user 
     } 
     else 
     { 
      return null; // TODO: Don't change view 
     } 
    } 

Est-il possible d'avoir le contrôleur ne commute pas la vue, et au lieu d'appeler une fonction jQuery pour afficher le message d'erreur?

Répondre

1

Renvoyez juste View() dans votre bloc else. Il réaffiche la page de connexion.

if (RepoConnection.verifyAndBindConn(userName, password)) 
    { 
     return Index(); // Redirect to home page, logged in as new user 
    } 
    else 
    { 
     return View(); // TODO: Don't change view 
    } 

Si vous voulez vraiment être ajaxy, vous allez devoir changer votre code pour ne pas utiliser un formulaire/le bouton d'envoi, mais d'envoyer vos informations de connexion via ajax, écrivez le cookie de session, et gérer la rediriger en code js.

+0

La page de connexion est en réalité une liste déroulante sur une page maître, donc cela ne fonctionnerait pas le mieux. Je suppose que je vais devoir regarder dans les autres options. –

Questions connexes