如何在ASP.NET MVC 3中通过AJAX登录

不,我被困在这里……你能帮帮我吗…

$(':submit').click(function (e) { var username = $('#username').val(); var password = $('#password').val(); var postdata = { 'Email': username, 'Password': password }; $.post({ url: 'http://localhost:7651/Home/CheckLogin', data: postdata, success: function (msg) { alert('Hi'); } }); }); 

这不起作用……它没有以某种方式调用动作控制器……

我的控制器动作是

 public string CheckLogin(Users checkuser) { if (db.CheckUserLoginDetails(checkuser.Email, checkuser.Password)) { return "Login Successful:" + checkuser.Email; } else { return "Login UnSuccessful"; } } 

请帮助….我还需要防止提交按钮的defualt行为,如e.preventDefault();

以下是您需要执行的步骤:

  • 您的LoginController需要validation登录并返回包含登录状态的HTML片段。 请注意,此处不需要完整的HTML。 只是包含结果的片段
  • 您可能知道,您可以使用放在视图中的jQuery.ajax 。 要将登录结果附加到DIV中,您可以使用jQuery.html以下是您需要的代码段(注意:尚未调试,但大致如下所示)
 // Override form submit $("form").live("submit", function (event) { event.preventDefault(); var form = $(this); $.ajax({ // Get the action URL url: form.attr('action'), type: "POST", // get all form variables data: form.serialize(), // upon success, the fragment of HTML from the Controller will be stored in loginResultHtml success: function(loginResultHtml){ // append the html to your login DIV id using jQuery.html function $(#your-login-status-div-id).html(loginResultHtml); } }); });
// Override form submit $("form").live("submit", function (event) { event.preventDefault(); var form = $(this); $.ajax({ // Get the action URL url: form.attr('action'), type: "POST", // get all form variables data: form.serialize(), // upon success, the fragment of HTML from the Controller will be stored in loginResultHtml success: function(loginResultHtml){ // append the html to your login DIV id using jQuery.html function $(#your-login-status-div-id).html(loginResultHtml); } }); });