您好,我的aspx网页中有一个指向Panel的modalPopupExtender,在Code-Behind中我创建了按钮,我希望它们显示modalPopup,所以我有:
buttonX.OnClientClick = "javascript:$get(" + modalPopup.ClientID + ").show();";
但它只是做一个PostBack,即使我把“return false”。在过去的代码结束时。
答案 0 :(得分:1)
我想我已经找到了一些东西,虽然我不确定它是最好的解决方案。
这是我的代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
Button btn = new Button();
btn.Text = "Hello World!";
btn.OnClientClick = "javascript:$get('" + HiddenField.ClientID + "').click(); return false;";
PanelHello.Controls.Add(btn);
}
这是我的ASPX页面:
<asp:HiddenField ID="HiddenField" runat="server" />
<asp:ModalPopupExtender ID="modalPopup" runat="server" TargetControlID="HiddenField"
PopupControlID="Panel" DynamicServicePath="" Enabled="True" />
<asp:Panel ID="Panel" runat="server">
<h1>
Hello World!</h1>
</asp:Panel>
这使得模式弹出而不回发 = D!
答案 1 :(得分:0)
试试这个
buttonX.OnClick = "javascript: preventDefault(); $get(" + modalPopup.ClientID + ").show();";
答案 2 :(得分:0)
我想我看到了你的问题。你没有在JS调用中引用ClientID,所以它实际上只是失败 - 这就是为什么return false
也不起作用的原因。如果唯一的问题是回发,你应该在页面发回自身之前看到你的弹出窗口。
您的代码:
buttonX.OnClientClick = "javascript:$get(" + modalPopup.ClientID + ").show();";
将添加"javascript:$get(ctl123).show();"
(我使用ctl123作为占位符名称,无论你的ClientID是什么) - 这个想法是错误正在发生,因为你应该拥有的是:
buttonX.OnClientClick = "javascript:$get('" + modalPopup.ClientID + "').show();";
将输出"javascript:$get('ctl123').show();"
不同之处在于,在第二个中引用了控件ID。
尝试一下,添加return false;
以防止回发。像这样:
buttonX.OnClientClick = "javascript:$get('" + modalPopup.ClientID + "').show(); return false;";