我已将 ASP.NET Web 窗体应用程序部署到 IIS7 Web 服务器。只要 Web.config 的编译部分中的设置为 debug=true
,它就可以完美运行。 。一旦我将其更改为 debug=false
,我理解这是应用程序运行时我应该做的事情,页面无法正确呈现。
具体来说,具有与 ModalPopupExtender 关联的面板的页面会加载面板内从一开始就显示的控件。这并不是说面板在不应该显示的时候显示了,而是面板内部的控件被渲染得好像它们不在面板内一样,导致控件随机分散在页面上。
一旦我设置debug=true
问题再次消失。
编辑:经过进一步研究,我发现即使 debug=true
如果我设置 ScriptMode
在 web.config 中设置我页面上 ToolkitScriptManager 的属性为 Release
,这也会导致启用 ModalPopupExtender 的面板出现相同的错误行为。因此,为了让事情正常工作,我必须有 debug=true
在web.config和ScriptMode=Debug
中在页面的 ToolkitScriptManager 中。这是怎么回事?难道 Microsoft 不想让我发布我的应用程序吗?
其他信息: 我的 Web.config 文件显示我的目标是 .NET Framework 4.5 版本,虽然查看 IIS 中的应用程序池似乎显示我的 Web 服务器上的应用程序都使用版本 4,但我并不是特别精通与 IIS,所以我在下面发布了一个屏幕截图。这会导致我遇到的问题吗?
最佳答案
虽然这不是您所询问的问题的直接解决方案,但您可以在页面加载时隐藏存在此问题的任何页面的面板(而不是回发)。我过去曾见过这被用作 ModalPopupExtender 在不同场景下显示页面加载控件的解决方法。这应该可以防止控件在页面上不适本地呈现,但在需要弹出时仍然有效。
protected void Page_Load(object sender, EventArgs e) {
if(!Page.IsPostBack)
pnl.Visible = false;
}
我还发现,在托管网站的计算机上获取最新版本的 .NET Framework 可以修复很多此类问题。
关于asp.net - 当 debug 设置为 false 时,ModalPopupExtender 控件变得可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24821776/