我正在开发一个 ASP.NET/C# 项目,在该项目中,我们将用户控件放入 AJAX 面板中,该面板的可见性在页面加载时设置为 false。一旦用户提交一些参数,该面板的可见性就会设置为 true。然而,虽然一旦设置并提交了这些参数,用户控件和所有其他面板内容都是可见的,但 uc 的 javascript 函数不起作用。
如果不是回发,我尝试通过在 Page_Load 中添加 Page.Controls.Add(controlID) 来解决此问题。当我执行此操作时,所有功能都已存在,但我知道有更好的方法来获取该功能,因为在这种情况下,控件被添加到页面两次。
编辑:我将 Controller 放在面板外部的 div 中,并从中获取了我想要的控件。但是,如果有人可以解释为什么未定义控件的 javascript 或提供将我的 UC 保留在面板中的解决方案,我将非常感激。
最佳答案
如果对于 asp 服务器控件,visible 属性设置为 false,则该控件甚至不会呈现在页面上。由于用户控件位于 ajax 服务器控件内部,因此不会呈现用户控件。 Javascript 代码由浏览器执行,因此它必须存在于页面上才能运行。 如果您可以将 css 属性 display: none 设置为隐藏,将 display: block 设置为显示 ajax 服务器控件,则用户控件及其 javascript 将在页面上呈现,但对于我设置为 display: none 的 css 属性则对用户隐藏,所以它的 javascript 将被执行。
要设置ajax服务器控件的显示属性,可以使用:ajaxControl.Styles.Add("display", "none")。 希望这对您有帮助。
关于c# - 如何让用户控件中的 javascript 在页面加载时可见性为 false 的面板内工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25317668/