【发布时间】:2010-05-08 16:51:45
【问题描述】:
这快把我逼疯了!我在这里阅读了至少 5 个与我的问题密切相关的问题,并且可能仅来自谷歌搜索的 5 页左右。我就是不明白。
我试图在用户填写“注册已提交”的表格后出现一个 jqueryui 对话框,然后重定向到另一个页面,但我一生都无法让任何 javascript 工作,甚至没有一个警告。
这是我的更新面板:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="upForm" runat="server"
UpdateMode="Conditional" ChildrenAsTriggers="False">
<ContentTemplate>
'Rest of form'
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />
<p>Did register Pass? <%= registrationComplete %></p>
</ContentTemplate>
</asp:UpdatePanel>
我要执行的 Jquery:(现在它位于标记的头部,autoOpen 设置为 false)
<script type="text/javascript">
function pageLoad() {
$('#registerComplete').dialog({
autoOpen: true,
width: 270,
resizable: false,
modal: true,
draggable: false,
buttons: {
"Ok": function() {
window.location.href = "someUrl";
}
}
});
}
</script>
最后是我的代码:(注释掉所有我尝试过的东西)
Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSubmit.Click
'Dim sbScript As New StringBuilder()'
registrationComplete = True
registrationUpdatePanel.Update()
'sbScript.Append("<script language='JavaScript' type='text/javascript'>" + ControlChars.Lf)'
'sbScript.Append("<!--" + ControlChars.Lf)'
'sbScript.Append("window.location.reload()" + ControlChars.Lf)'
'sbScript.Append("// -->" + ControlChars.Lf)'
'sbScript.Append("</")'
'sbScript.Append("script>" + ControlChars.Lf)'
'ScriptManager.RegisterClientScriptBlock(Me.Page, Me.GetType(), "AutoPostBack", sbScript.ToString(), False)'
'ClientScript.RegisterStartupScript("AutoPostBackScript", sbScript.ToString())'
'Response.Write("<script type='text/javascript'>alert('Test')</script>")'
'Response.Write("<script>windows.location.reload()</script>")'
End Sub
我试过了:
将变量从服务器传递到 客户端通过内联 在 头标签的javascript块。
将相同的代码放入脚本中
updatePanel 中的标签。尝试使用
注册ClientScriptBlock 和
注册启动脚本只是做一个 Response.Write 与 脚本标签写在里面。
尝试了各种推杆组合 中的整个 jquery.dialog 代码 registerstartup 脚本,或者只是
试图改变 autoOpen
属性,或者只是在
上调用“打开” 它。
我什至无法得到一个简单的警报来处理其中任何一个,所以我做错了,但我不知道它是什么。
这是我所知道的:
Jquery 甚至可以正确绑定 在异步回发上,因为 div 作为对话框的容器是 总是看不见,我看到了类似的 在此处发帖说明这是导致 一个问题,这里不是这种情况。
使用 page_load 代替
document.ready 因为这是应该的 在异步和正常上运行
回发,所以这不是问题。更新面板正在更新 正确,因为
<p>Did register Pass? <%= registrationComplete %></p>在我更新为 true 之后 提交表单。
那么我怎样才能做到这一点呢?我想要的只是->单击更新面板内的提交按钮->运行服务器端代码以验证表单并插入到数据库中->如果一切成功,则弹出该jquery(模态)对话框说嘿它有效。
【问题讨论】:
标签: .net javascript jquery updatepanel postback