在重定向到同一页面(或刷新)之前的数据保存之后显示OK对话框
问题描述:
我有一个aspx页面,允许用户编辑数据库记录上的数据。记录保存后,重定向会将您带回到同一页面。我想要的是一个带有“记录保存”的弹出窗口。里面还有一个“OK”按钮。我意识到这是非常基本的,但弹出之前发生保存,如果我只使用JavaScript(无论是前期或从代码隐藏),这意味着你得到一个保存消息之前,任何可能的错误,并且根本没有弹出如果我使用我发现的大部分代码隐藏解决方案。举例来说,在我的网页:在重定向到同一页面(或刷新)之前的数据保存之后显示OK对话框
<ajaxToolkit:TabPanel runat="server" ID="JobPanel" HeaderText="Job Info">
<ContentTemplate>
<table>
<tr>
<td class="left_column" colspan="2">
<asp:Button ID="btnSave" OnClick="SaveAll"
OnClientClick="setConfirmUnload(false);"
runat="server" Text="Save" />
</td>
</tr>
</table>
</ContentTemplate>
</ajaxToolkit:TabPanel>
在我的代码隐藏,我曾尝试:
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup",
"alert('Record saved successfully.');
window.location='EditJob.aspx?
JOBID='" & txtJobID.Text, True)
然后
Dim msg As String = "Job saved."
Dim script As String = "alert('" & msg & "');"
script += "window.location.href = 'EditJob.aspx?JOBID='" & txtJobID.Text
System.Web.UI.ScriptManager.RegisterClientScriptBlock(Me, Me.[GetType](), "saved", script, True)
然后
Response.Redirect("EditJob.aspx?JOBID=" & txtJobID.Text & "&MSSG=Job%20Saved")
与这pre_render:
If strMSSG <> "" Then
ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(),
"generateSuccess", "generate('Job Saved.', 'success', 'center');", True)
End If
,这在ASPX:
function generate(text, type, layout) {
var n = noty({
text: text,
type: type,
dismissQueue: true,
layout: layout,
theme: 'defaultTheme',
buttons: [
{
addClass: 'btn btn-primary', text: 'Ok', onClick: function ($noty) {
$noty.close();
}
}
]
});
console.log('html: ' + n.options.id);
}
//calls generator with success
function generateSuccess() {
generate('Success', 'success', 'center');
}
我喜欢Noty,这是我在这里的另一个问题的答案中发现的外观和感觉。但是,如果我点击F5或刷新按钮,由于URL中的查询字符串,noty会再次显示。
我有一个jquery弹出窗口的工作,但我似乎无法获得多个在一个页面上。我想只是另一个jQuery的弹出窗口,但这不起作用。
任何帮助,非常感谢。尽管如此,我还是不擅长javascript或jquery。
答
无需重新导向回到同一页面以显示更新的数据。只需更新任何需要显示新数据的控件的数据源即可。
记住
请求=>过程数据=>响应
请求时,你处理数据,返回响应。除非您有真正的理由这样做(例如,您希望将消息传递到另一个页面),否则不要在整个事件中缠绕大量重定向并在查询字符串中传递消息。
(我可能是推荐noty的家伙)。为什么刷新整个页面/执行重定向?用'RegisterStartupScript'简单地创建你的诺伊和手动更新任何需要更新数据的控件的数据源应该可以做到这一点,不需要重定向。 – mason 2015-02-23 15:46:46
...我从来没有想到...我一直都很想让弹出窗口和页面刷新的顺序正确,我从来没有想过其他任何东西。我会试一试,让你知道。 – pixelmeow 2015-02-23 15:53:47
到目前为止这么好。我现在要做的就是抓住F5,这样页面就不会再保存记录。如果你把你的评论作为答案,我会接受它。 – pixelmeow 2015-02-23 15:59:17