我有一个aspx页面,允许用户编辑数据库记录上的数据。保存记录后,重定向会将您带回到同一页面。我想要的是一个带有“Record saved”的弹出窗口。在它和一个“确定”按钮。我意识到这是非常基本的,但弹出在保存之前发生,如果我只使用javascript(无论是在前面还是从代码隐藏),这意味着你在任何可能的错误之前得到一条保存消息,并且如果我没有弹出窗口使用我发现的大多数代码隐藏解决方案。例如,在我的页面中:
<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 popup,但这不起作用。
非常感谢任何帮助。我对javascript或jquery一点都不好。
答案 0 :(得分:1)
无需重定向回同一页面即可显示更新的数据。只需更新需要显示新数据的任何控件的数据源。
请记住
Request =&gt;过程数据=&gt;响应
请求进来,您处理数据,返回响应。不要使用大量重定向和在查询字符串中传递消息来解决整个问题,除非您有真正的理由这样做(例如,您希望将消息传递到另一个页面)。