【发布时间】:2012-04-17 03:51:22
【问题描述】:
我很清楚之前在 SO 上已经提出和讨论过我遇到的问题,但我已经阅读了无数次,但没有一个真正帮助我解决了我的问题。 我正在使用 Visual Studio、ASP.NET 和 C#。
这就是我想要做的事情: 我有一个 JQuery 对话框,里面有一个标签。我也有一个按钮。 当按下该按钮时,我想跳入按钮的单击事件并为 JQuery 对话框中的标签设置文本。然后我希望打开对话框,显示带有刚刚在我的按钮的单击处理程序中设置的文本的标签。
这是我的 JQuery 对话框中应该包含的内容(请注意,我已经为这个问题简化了代码):
<div id="dialog" title="Basic dialog">
<asp:Label ID="Label1" runat="server" ></asp:Label>
</div>
在我的页面上,我有一个带有 onClick 事件的 ASP.NET 按钮。在后面的代码中,在我的按钮的单击事件中,我为 Label1 设置了文本。
这是我的按钮:
<asp:LinkButton ID="testButton" runat="server" onClick="button_Click" text="click me"/>
这是点击处理程序背后的代码:
protected void button_Click(object sender, EventArgs e)
{
Label1.Text = "Hello";
}
这实际上工作,但不是我想要的。
我的问题: 由于某种原因,标签的文本仅在我按下按钮的 SECOND 时设置。这意味着,当我第一次单击按钮时,对话框打开,不显示任何内容,然后对话框消失并且页面回发。第二次按下按钮时,我看到已为标签设置了文本,但随后对话框立即消失,页面回发。
我尝试将以下内容添加到我的按钮:OnClientClick="return false;" 当我这样做时,回发问题消失了,但现在我的按钮的点击事件没有触发。
我还尝试将以下内容添加到我的脚本中:event.preventDefault();这会导致与 return false; 相同的问题,页面不会回发,只是不会跳转到按钮的单击事件。
这是我的对话脚本:
<script>
$(function () {
$('#dialog').parent().appendTo($("form:first"))
$("#dialog").dialog(
{
autoOpen: false,
buttons: {
"Ok": function () {
$(this).dialog("close");
}
}
}
);
$("#testButton")
.button()
.click(function openConfirmDialog() {
$("#dialog").dialog("open")
});
});
</script>
基本上我要做的就是单击一个按钮来设置标签的文本,打开一个对话框,并保持该对话框打开,直到用户关闭它。
我可能遗漏了一些东西,但让我惊讶的是,做一件我想做的简单的事情是多么困难。
亲切的问候, 简
【问题讨论】:
-
你在使用 UpdatePanels 吗?
-
我不是......我不明白为什么我需要他们做我想做的事?
-
你没有。我通常只是看到与部分回发和 UpdatePanel 相关的这个问题。
-
$('#dialog').parent().appendTo($("form:first"))指的是什么?我没有看到可以解释这一点的标记。 -
我阅读了 LinkButton 的 MSDN 参考资料,我的理解是,通过设计,当点击 LinkButton 时会导致回发到服务器。看来这不是你想要的?为什么不直接避免回发并使用 jquery ajax 调用您的服务器来检索文本呢?