ASP.net 网络表单 - 访问控制



我的问题是:

我有一个看起来像这样的网页:

<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

代码来源:循环浏览文本框和标签

最新更新