【问题标题】:ModalPopupExtender controls become visible when debug is set to false当 debug 设置为 false 时,ModalPopupExtender 控件变得可见
【发布时间】:2014-09-09 09:37:45
【问题描述】:

我已将 ASP.NET Web 窗体应用程序部署到 IIS7 Web 服务器。只要 Web.config 的 Compilation 部分中的设置为debug=true,它就可以完美运行。一旦我将其更改为debug=false,我知道这是我应该在应用程序运行时执行的操作,页面无法正确呈现。

具体来说,具有与 ModalPopupExtender 关联的 Panel 的页面会加载 Panel 内的控件,这些控件从一开始就显示出来。不是Panel不该显示的时候显示,而是Panel内部的控件渲染得好像不在Panel里面,导致控件随机散布在页面中。

一旦我再次设置debug=true,问题就消失了。

编辑:经过进一步的尝试,我发现即使在 web.config 中设置了 debug=true,如果我设置了 ToolkitScriptManagerScriptMode 属性em> 在我的页面上Release,这也会导致我的启用 ModalPopupExtender 的面板出现同样的错误行为。所以,为了让事情正常工作,我必须在 web.config 中有 debug=true,在页面的 ToolkitScriptManager 中有 ScriptMode=Debug。这是怎么回事? Microsoft 不希望我发布我的应用程序吗?

附加信息: 我的 Web.config 文件显示我的目标是 .NET Framework 4.5 版,而在 IIS 中查看应用程序池似乎表明我在 Web 服务器上的应用程序都使用版本 4,但我并不是特别精通使用 IIS,所以我在下面发布了一个屏幕截图。这会导致我遇到的问题吗?

【问题讨论】:

  • 您使用的是哪个版本的 ajaxcontroltoolkit?
  • 我使用的是 v4.1.7.1005。
  • 这不是一个过时的版本吗?
  • 好像有稍微更新的版本,我试试升级。
  • 升级到最新版本的 AjaxControlToolkit - 问题依然存在。

标签: asp.net debugging modalpopupextender


【解决方案1】:

虽然这不是您所询问问题的直接解决方案,但您可以为任何有此问题的页面隐藏页面加载(而不是回发)面板。我已经看到这在过去被用作 ModalPopupExtender 在不同场景中显示页面加载控件的解决方法。这应该可以防止控件在页面上不恰当地呈现,但在需要弹出时仍然有效。

protected void Page_Load(object sender, EventArgs e) {
    if(!Page.IsPostBack)
        pnl.Visible = false;
}

我还发现,在托管网站的计算机上安装最新版本的 .NET 框架可以解决很多类似的问题。

【讨论】:

  • 感谢您的贡献。我希望这会起作用,但我宁愿找到问题的原因,而不仅仅是掩盖症状。不过,我会看看是否可以更新服务器的 .NET 版本。
  • 作为更新,我最后试了一下,虽然面板中的控件在页面加载时没有显示,但单击按钮以显示面板并没有做任何事情。这与在面板上设置display: none 相同(我也尝试过) - 它可以防止面板永远可见。
  • 您是否添加了代码,使面板在单击显示模式的按钮中再次显式可见?
  • 是的,我调用了 ModalPopupExtender.Show()
【解决方案2】:

您的应用程序池版本和配置文件之间应该存在冲突。也许您正在使用 v4.0 应用程序池,并且您的 web.config 配置为 v2.0,反之亦然。

请检查您的版本并对此答案发表评论,让我们检查一下。 :)

--编辑--

您可能有 3 个选项:

  1. Downgrade您的 web.config 从 4.5 到 4.0。
  2. 升级安装在您机器上的.NET framework
  3. 将面板的样式显示设置为无:

【讨论】:

  • 似乎 web.config 的目标是 v4.5 和应用程序池 v4,但我对 IIS 并不熟悉,所以我编辑了我的问题并包含了应用程序池的屏幕截图屏幕。 4 和 4.5 之间的版本差异会导致问题吗? ModalPopupExtender 几乎不是一个新控件!
  • 您的回答非常清晰,链接也很棒 - 谢谢!不幸的是,我已成功地将我的应用程序重新定位到 .NET Framework 的 v4.0 以匹配服务器,但问题仍然存在,ModalPopupExtender 的面板控件在页面加载时仍然可见。
  • 您可以尝试我在答案中添加的第三个选项。 :)
  • 刚刚尝试过(尽管它只是解决症状而不是原因),但是设置了该属性,虽然在页面加载时控件不会出现,但面板也不会出现在我点击了应该让它这样做的控件!
猜你喜欢
  • 2011-06-26
  • 2011-05-25
  • 1970-01-01
  • 2019-01-05
  • 2016-03-17
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
相关资源
最近更新 更多