2012-06-05 2 views
0

Я пишу приложение ASP.NET, которое требует от пользователей входа на сервер с использованием внешнего API. Я бы хотел, чтобы пользователи получали мгновенную обратную связь, используя Ajax, если они вводят неверные учетные данные.Вход Ajax с проверкой на стороне сервера с использованием ASP.NET

мой взгляд

@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> 
     } 

Мой контроллер

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 
     } 
    } 

Есть ли способ, чтобы контроллер не переключать вид, и вместо того, чтобы вызвать функцию JQuery, чтобы отобразить сообщение об ошибке?

ответ

1

Просто верните View() в вашем блоке else. Он отобразит страницу входа в систему.

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

Если вы действительно хотите быть ajaxy, вы будете иметь, чтобы изменить свой код, чтобы не использовать форму/кнопку отправки, но отправить свои учетные данные для входа через AJAX, писать куки сессии, и обрабатывать перенаправить в js-код.

+0

Страница входа в систему - это выпадающий список на главной странице, поэтому это не сработает. Думаю, мне нужно будет изучить другие варианты. –

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