当debug设置为false时,ModalPopupExtender控件变为可见

时间:2014-07-18 09:36:43

标签: asp.net debugging modalpopupextender

我已将ASP.NET Web窗体应用程序部署到IIS7 Web服务器。只要 Web.config 的编译部分中的设置为debug=true,它就可以正常工作。一旦我将其更改为debug=false,我理解的是当应用程序处于活动状态时我应该做的事情,页面无法正确呈现。

具体来说,具有与ModalPopupExtender相关联的Panel的页面加载了Panel中显示的控件。这不是显示Panel不应该显示的,而是面板内部的控件呈现为好像它们不在Panel内部,导致控件在页面中随机分散。

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

编辑:进一步玩了之后,我发现即使在 web.config 中设置了debug=true,如果我设置了ScriptMode属性>我的页面上的ToolkitScriptManager 到Release,这也会导致我的ModalPopupExtender启用Panel的行为不正确。因此,为了使事情正常工作,我必须在页面的 ToolkitScriptManager 中的 web.config debug=true中使用ScriptMode=Debug。这是怎么回事?微软是否要我发布我的申请?

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

enter image description here

2 个答案:

答案 0 :(得分:1)

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

请检查您的版本,并在此回答中发表评论并进行检查。 :)

<强> - 编辑 -

您可以有3个选项:

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

    &LT; asp:Panel ID =&#34; panel1&#34; RUNAT =&#34;服务器&#34; style =&#34; display:none;&#34;&gt;

答案 1 :(得分:1)

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

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

我还发现在托管网站的计算机上获取最新版本的.NET框架可以解决很多这样的问题。