正如标题所说。我有代码禁用runat = server的所有控件。其内容如下
Dim c As Control
For Each c In pc
If c.HasControls Then DisableAllControls(c.Controls)
If c.GetType.ToString.ToLower.IndexOf("webcontrols.dropdownlist") > -1 Then
DirectCast(c, DropDownList).Enabled = False
ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.textbox") > -1 Then
DirectCast(c, TextBox).Enabled = False
ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.radiobuttonlist") > -1 Then
DirectCast(c, RadioButtonList).Enabled = False
ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.radiobutton") > -1 Then
DirectCast(c, RadioButton).Enabled = False
ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.button") > -1 Then
DirectCast(c, Button).Enabled = False
End If
Next
但我在那里有几个href,我也想禁用它。我知道他们不会运行服务器,所以我怎么能抓住这些呢?
答案 0 :(得分:0)
您可以添加runat="server"
:
<a runat="server" href="..." ></a>
这是使用服务器端代码维护控件的唯一方法。
答案 1 :(得分:0)
您也可以将runat =“server”添加到HTML控件中。没有它,您将无法访问服务器端的控件,您将无法禁用它。
答案 2 :(得分:0)
该代码看起来无效(If c.HasControls Then DisableAllControls(c.Controls)
没有匹配End If
)但是VB.NET在没有我意识的情况下添加了内联If
语法。
无论如何,就禁用所有runat="server"
控件而言,您应该能够执行此操作:
For Each c as WebControl In pc.OfType(Of WebControl)()
' Put your recursive call here as before
c.Enabled = False
Next
现在,要“禁用”其他元素,您可以向其添加runat="server"
(如果您已生成HTML,可能甚至不可能),或者您可以使用某些JavaScript。我将假设禁用你的意思是隐藏在<a>
标签的情况下?
jQuery使这很简单,示例脚本如下:
$(document).load(function() {
$('a').hide();
});
或:
/* hides all a tags under an element with class="someClass" */
$(document).load(function() {
$('.someClass a').hide();
});
然后,您可以让您的代码在您的页面中使用以下内容呈现此脚本:
Dim script as String = "" /* your javascript here */
Me.ClientScript.RegisterClientScriptBlock(Me.GetType(), "HideTagsScript", script)