我遇到了这个问题,我花了很长时间在我的代码中解决它。
首先是我有 UpdatePanel 和一个 jquery 对话框。下面是我正在使用的脚本。
<script>
var uiDialog = $('.ui-dialog-container').parent();
(uiDialog.next().length && uiDialog.appendTo((document.forms.item(0) != null) ? document.forms.item(0) : document.body));
//verifyUser();
function ShowDialog() {
dialog = $("#dialog-form").dialog({
autoOpen: true,
resizable: false,
height: 400,
width: 800,
modal: true,
overlay: {
backgroundColor: '#000',
opacity: 0.5
}
});
}
</script>
这是表格
<div id="dialog-form" title="Verify Transaction" style="display:none;" >
<asp:ScriptManager ID="ScriptManager2" runat="server" />
<fieldset style="background-color:#ffd800;border-radius:5px;">
<label for="fname">First Name :</label>
<label for="fname"><%= DetailsView1.Rows[7].Cells[1].Text %></label><br />
<label for="lname">Last Name :</label>
<label for="lname"><%= DetailsView1.Rows[9].Cells[1].Text %></label><br />
<label for="zip">Zip Code :</label>
<label for="zip"><%= DetailsView1.Rows[22].Cells[1].Text %></label><br />
</fieldset>
<hr />
<asp:Button id="btnVerified" runat="server" OnClick="btnVerify_Click" UseSubmitBehavior="false" Text="Verified" />
<asp:Button ID="btnCancelled" runat="server" OnClientClick="dialog.dialog('close')" Text="Cancelled" UseSubmitBehaviour="false"/>
</div>
在这里,我们看到我在按钮控件中使用服务器端和客户端脚本。对他们来说,重要的是从对话框中删除表单标签,将脚本放入 UpdatePanel 并设置 UseSubmitBehaviour="false"。这将导致对话框回发,这是我们需要转到服务器端的内容。
最初我有表单标签。一旦我删除了表单标签,它就会执行事件 OnClientClick 和 OnClick 服务器端事件。干杯!!如果任何机构有这个问题,这里就是解决方案。
以下问题终于得到解决:
- 客户端事件执行。
- 使用 jQuery-UI 对话框弹出的服务器端事件执行。
- 对话框执行 PostBack,这意味着我们可以在对话框内拥有一个带有控件的完整 ASP.NET 表单。
- “状态信息对此页面无效并且可能已损坏”的问题已得到解决。
注意:我在表单中使用 DetailsView 控件。
干杯!!