【问题标题】:Another modal popup extender question另一个模态弹出扩展器问题
【发布时间】:2009-10-22 18:59:08
【问题描述】:

我正在尝试让模式弹出窗口工作,它需要在后面的代码中触发。

 <asp:Button ID="btnModalPopUp" runat="server" Text="Button" Style="display: none" />
<asp:Panel ID="pnlModalPopup" runat="server" CssClass="modalPopup" Style="display: none"
    Width="233px">
    <div id="Div1" runat="server" cssclass="title">
        Modal text here.
        <asp:TextBox ID="txtEditComments" runat="server"></asp:TextBox>
    </div>
</asp:Panel>
<cc1:ModalPopupExtender ID="modalMessage" runat="server" TargetControlID="btnModalPopUp"
    PopupControlID="pnlModalPopup" BackgroundCssClass="modalBackground"         DropShadow="true"/>

后面的代码:

protected void Page_Load(object sender, EventArgs e)
{
    modalMessage.Show();
}

即使它命中了“modalMessage.Show();”代码它不显示模态面板。

【问题讨论】:

  • 好的 - 有什么问题?顺便说一句:
  • @Arthur: display:none 是装饰性的,否则在页面加载时弹出窗口会显示,然后在ModalPopupExtender 启动并隐藏它时会迅速消失。
  • 只是一个问题,但是如果您从 btnModalPopup 中删除“display:none”,这是否有效?

标签: c# asp.net modalpopupextender


【解决方案1】:

两种解决方案:

第一种解决方案:

pnlModalPopup 中删除Style="display:none"

第一个解决方案是在页面第一次加载时会导致弹出窗口在屏幕上“闪烁”,然后迅速消失。

第二种解决方案:

protected void Page_Load(object sender, EventArgs e)
{
    pnlModalPopup.Style["display"] = "block";
    modalMessage.Show();
}

建议: 我建议使用第二种解决方案,这样模式弹出窗口就不会闪烁然后消失。

编辑:我刚刚测试了你的代码:

我刚刚在一个仅包含您提供的代码的简单页面中测试了您的代码...效果符合预期

检查以下内容:

  1. 您的模态弹出窗口是否在有条件更新的UpdatePanel 中定义?
  2. 检查以确保模式弹出窗口未在可见性设置为 false 的 Panel 中定义。
  3. 如果这不起作用,请检查模态弹出窗口是否确实在呈现的网页的源代码中。

【讨论】:

  • 您的代码中是否还有其他引用设置了pnlModalPopup 的可见性(通过样式标记或可见属性)?
  • CSS: .modalBackground { 背景色:灰色;过滤器:阿尔法(不透明度= 70);不透明度:0.7; } .modalPopup{ 背景颜色:#ffffff;填充:3px;这是我对这些控件所做的唯一样式。
  • 我可以让它在没有母版页或额外内容的标准 aspx 页面中工作。回答您的问题: 1. 不,它不在更新面板中。 2. 不,它不是在隐藏的另一个面板中,而是在母版页中。 3. 是的,源代码里好像都有。
  • @Adam:您使用的 Page_Load 是在母版页中还是在关注的特定页面中?
  • 我刚刚在我的测试应用程序中将modalMessage 添加到Master 页面,它仍然可以正常工作。我会尝试追踪并评估对modalMessagepnlModalPopup 的所有引用
【解决方案2】:

根据需要听取 Chris 的评论:

display:none 在外观上是不需要的, 否则弹出窗口将显示 页面正在加载,然后会很快 ModalPopupExtender 消失 介入并隐藏它。

我们必须像这样展示我们的节目:

  pnlModalPopup.Visible = true;           
  modalMessage.Show();

【讨论】:

  • 只有当他们在后面的代码中将 Visible 属性设置为 false 时才会起作用,因为他没有在标记中设置 Visible 属性。如果是这样的话……他应该考虑一开始就不要设置Visible 属性。
  • 我们没有设置 visible 属性,测试一下。
  • 如果模态框不显示,很可能是 JavaScript 错误。
  • 如果在此处设置断点,您将看到pnlModalPopup.Visible 在设置为真之前为真。该语句是多余且不必要的除非您事先将Visible 属性设置为false。
  • 我不同意你的观点,有时人们的解释并不干净。如果它在明确时不起作用,那么他还有其他问题。
猜你喜欢
  • 2011-05-25
  • 2010-10-07
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多