2012-02-07 30 views
0

我必须丢失一些明显的东西...如何防止“返回false”;在与ASP.NET MVC冲突的AjaxSubmit RedirectToAction

我有一个标准的ASP.NET MVC3登录操作,正常工作。如果用户/密码匹配,则FormsAuthentication执行其SetCookie例程并按预期执行RedirecToAction,否则返回设置模型状态错误并将模型返回到视图。所以这适用于Javascript禁用。

我现在试图添加jQuery.Form插件来做一个ajaxSubmit,如果用户不使用匹配的用户/密码组合显示错误。

$(document).ready(function() { 
     var options = { 
      success: showResponse 
     }; 

     $('#formLogon').submit(function() { 
      $(this).ajaxSubmit(options); 
      // return false; 
     }); 

     function showResponse() { 
      $("#loginError").show();        
     } 
    }); 

我的问题是,如果我取消注释“返回false”;在调用showResponse函数后,ajaxSubmit错误div正确显示。但是,如果提交了正确的用户名/密码,用户将不会被重定向,因为重定向被拦截(但我已经看到了Fiddler中的GET调用,所以我知道重定向正在发出请求)。

我试着移动“返回false”;到showResponse函数,但它不起作用,没有返回false之后,ajaxSubmit MVC重定向踢在回调之前,并且从不显示错误div。

这是不是我正在尝试做的正确实施?

回答

0

您应该尝试查看jQuery的$ .ajax函数。有了这个功能,你可以定义一个回调。

应该发生什么是以下 在提交时总是返回false 当用户输入登录时发出ajax请求。 如果用户输入正确的登录名,请删除提交功能并使用$(this).submit提交。 (使用$ .ajax的回调) 然后将返回假回。

这是一个肮脏的修复程序,但我认为它会工作

+0

对不起,我不是很遵循你的事件序列。如果我已经提交了一次并检查了密码,为什么还要再次提交表单?而且我不太清楚你的意思是“把回报放回去”。 – user1194094 2012-02-08 03:32:50

+0

那么你试图做到这一点(真的)只有当登录是正确的提交表单。当您尝试登录时,您将提交函数返回false。这使得表单只会对服务器执行ajax调用,并且不会因为返回false而提交。如果你使用$ .ajax,你可以定义一个回调函数。在这个回调函数中,你可以检查登录是否正确。如果不是,您可以显示错误,如果它是正确的,您可以从登录表单的提交功能中删除返回false。然后你让表单提交。 – 2012-02-08 08:32:58

相关问题