我的问题是:
我有一个看起来像这样的网页:
<asp:PlaceHolder ID="Formular" runat="server">
<table>
<tr runat="server" visible="true" id="1">
<td> <asp:TextBox ID="TextBox13" runat="server" AutoPostBack="true" OnTextChanged="tb_Changed" CssClass="tx"></asp:TextBox>
</td>
</table>
</asp:PlaceHolder>
现在我想遍历网页上的所有控件,但当然,我无法使用此代码访问该 TextBox13:
Dim tb as TextBox
For Each ctrl In Formular.Controls
If TypeOf ctrl Is TextBox Then
tb = ctrl
If tb.Text.Trim.Length = 0 Then
tb.Style("background-color") = "red"
count += count + 1
Else
tb.Style("background-color") = "white"
End If
End If
Next
有没有优雅的简单方法来访问该文本框?
我不使用 javascript 隐藏该表行的原因是,此页面的代码稍后将在其他地方使用,并且没有任何 javascript 会容易得多。
您可以通过以下方式访问文本框的对象:
Dim szTextbox As String = Left(Request.Form("TextBox13"), 50)
以字符串形式获取内容
TextBox13.Text
在文本框控件中获取和设置字符串
更新
基于查找特定文本框。
递归浏览页面并根据 id 查找文本框:
Public Function FindControlRecursive(Of ItemType)(ByVal Ctrl As Object, ByVal id As String) As ItemType
If String.Compare(Ctrl.ID, id, StringComparison.OrdinalIgnoreCase) = 0 AndAlso TypeOf Ctrl Is ItemType Then
Return CType(Ctrl, ItemType)
End If
For Each c As Control In Ctrl.Controls
Dim t As ItemType = FindControlRecursive(Of ItemType)(c, id)
If t IsNot Nothing Then
Return t
End If
Next
Return Nothing
End Function
代码来源:循环浏览文本框和标签