当用户在表单中保存数据时,我试图显示以下div(通过fadeIn / fadeOut)。
// 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 :(得分:0)
我认为您应该使用jquery.post()
来提供后台帖子,以防止重新加载该页面。
答案 1 :(得分:0)
好吧,我只是拒绝提交,并通过AJAX进行:
$('#form').submit(function()
{
return false;
$.post('test.php', $(this).serialize(), function(data)
{
//Do your stuff. Data is the POST response data.
});
});
祝你好运!
答案 2 :(得分:0)
返回URL,并在客户端重定向。您可以使用JsonResult
或其他来将MVC中的数据发送回客户端。
答案 3 :(得分:0)
我假设你想避免走ajax路线。如果是这样,只需将消息字符串放在cookie中并测试视图中是否存在消息。如果有消息,请显示它。由于它在cookie中,即使您在处理成功的帖子后重定向,也可以检索该消息。确保在显示消息后清除cookie!
我们已经在我的公司正式化了这个过程并将其称为“Flash”(就像Ruby on Rails曾经或者可能仍然如此)。
理想情况下,您可以将消息设置,检索和显示逻辑包装到帮助程序类中,以从您的视图中抽象其实现。这样你就可以使用cookies,viewdata甚至会话值,你的视图和控制器也不必改变行为。