我必須丟失一些明顯的東西...如何防止「返回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。
這是不是我正在嘗試做的正確實施?
對不起,我不是很遵循你的事件序列。如果我已經提交了一次並檢查了密碼,爲什麼還要再次提交表單?而且我不太清楚你的意思是「把回報放回去」。 – user1194094 2012-02-08 03:32:50
那麼你試圖做到這一點(真的)只有當登錄是正確的提交表單。當您嘗試登錄時,您將提交函數返回false。這使得表單只會對服務器執行ajax調用,並且不會因爲返回false而提交。如果你使用$ .ajax,你可以定義一個回調函數。在這個回調函數中,你可以檢查登錄是否正確。如果不是,您可以顯示錯誤,如果它是正確的,您可以從登錄表單的提交功能中刪除返回false。然後你讓表單提交。 – 2012-02-08 08:32:58