2011-01-20 37 views
0

我試圖在用戶在表單中保存數據時顯示下面的div(通過fadeIn/fadeOut)。成功開機自檢後顯示jQuery淡入淡出

// Display a notification if the save is successful. 
$('<div class="save-alert">The current scenario has been saved.</div>') 
    .insertAfter($('#main')) 
    .fadeIn('slow') 
    .animate({ opacity: 1.0 }, 3000) 
    .fadeOut('slow', function() { 
    $(this).remove(); 
}); 

目前,我使用Html.BeginForm助手提交表單。因此,我的整個頁面都已發佈,而且我無法顯示上述通知。我意識到我可以使用Ajax.BeginForm,但後來遇到了其他問題(即,在保存場景後無法執行return RedirectToAction("Index", new { id = scenario.ScenarioID });)。

有沒有人對我可以嘗試做的其他事情有任何建議?

回答

0

我假設你想避免去ajax路線。如果是這樣,只需將消息字符串放入cookie中,然後在視圖中測試消息的存在。如果有消息,請顯示它。由於它位於cookie中,因此即使在處理成功的帖子後重定向,也可以檢索該消息。確保在顯示消息後清除cookie!

我們已經在我的公司正式確定了這個流程,並將其稱爲「Flash」(就像Ruby on Rails曾經用過的,或者可能還是這樣)。

理想情況下,您可以將消息設置,檢索和顯示邏輯封裝到助手類中,以從您的視圖中抽象它的實現。這樣你可以使用cookies,viewdata甚至會話值,你的視圖和控制器不需要改變行爲。

0

我認爲你應該使用jquery.post()來提供背景文章,以防止頁面重新加載。

http://api.jquery.com/jQuery.post/

+0

這就是Ajax.BeginForm所做的。 – 2011-01-20 21:38:30

0

好吧,我只是通過AJAX否認提交併做到這一點:

$('#form').submit(function() 
{ 
    return false; 

    $.post('test.php', $(this).serialize(), function(data) 
    { 
    //Do your stuff. Data is the POST response data. 
    }); 
}); 

祝你好運!

+0

這就是Ajax.BeginForm正在做的事情。 – 2011-01-20 21:39:22

+0

這是什麼?我認爲這是jQuery。 – Blender 2011-01-20 21:59:14

0

返回URL,並在客戶端重定向。您可以使用JsonResult或其他來將MVC中的數據發送回客戶端。

+0

你有一些如何做到這一點的示例代碼? – JasCav 2011-01-20 22:09:57