如何从Javascript函数设置ASP.NET控件的“Visible”属性?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

Bascially我想知道从Javascript函数隐藏/显示ASP.NET控件的最佳方法。我想我会只使用JavaScript访问控制:

var theControl = document.getElementById("txtEditBox");

然后,将控件的Visible属性设置为true / false。它似乎没有工作,我似乎无法弄清楚如何将“可见”设置为真/假。我怎样才能做到这一点?另外,这是从Javascript函数隐藏/显示ASP.NET控件的最佳方法吗?

提问于
用户回答回答于

ASP.NET控件的“Visible”属性决定了它是否会在客户端呈现(即发送给客户端)。如果页面呈现时为false,它将永远不会到达客户端。

所以,在技术上你不能设置控制的属性。

这就是说,如果控制在客户端上呈现,因为Visible属性为true时,页面呈现,您可以使用JavaScript这样便隐藏它:

var theControl = document.getElementById("txtEditBox");
theControl.style.display = "none";

// to show it again:
theControl.style.display = "";

假定控件的id属性在客户端上确实是“txtEditBox”,并且它已经可见。

另外,这是从Javascript函数隐藏/显示ASP.NET控件的最佳方法吗?

尽管一个更好的方法是使用CSS类定义,但并不一定是“最好”的方法:

.invisible { display: none; }

当你想隐藏某些东西时,动态地将这个类应用到元素中; 当您想再次显示时,请将其删除。请注意,我相信这只适用于display值为开始的元素block

用户回答回答于

而不是使用可见,设置其CSS显示:无

//css:
.invisible { display:none; }

//C#
txtEditBox.CssClass = 'invisible';
txtEditBox.CssClass = ''; // visible again

//javascript
document.getElementById('txtEditBox').className = 'invisible'
document.getElementById('txtEditBox').className = ''

扫码关注云+社区