asp.net 更改具有相同前缀、不同后缀的各个字段的格式

asp.net change format on various fields with same prefix, different suffix

我在 asp.net 页面中有以下 VB 代码。

它工作正常,但我相信一定有更好的方法(也许只有一行)来覆盖块中的所有 6 个字段。

可以看到有4行字段,每行包含6个字段。 他们的ID都以前缀"txtDO"开头,然后是数字(7到11),然后是后缀(_D, _C, _1, _2, _3, _B)

请注意,这些不是页面上的唯一字段,还有几个组。 因为我在 VB 循环中还有额外的代码 运行,所以我需要保持这种方式。

For l = 7 To 11                   
                CType(FindControl("txtDO" & l & "_D"), TextBox).Style.Add("border-bottom", "thin dotted #AD9F9F")
                CType(FindControl("txtDO" & l & "_C"), TextBox).Style.Add("border-bottom", "thin dotted #AD9F9F")
                CType(FindControl("txtDO" & l & "_1"), TextBox).Style.Add("border-bottom", "thin dotted #AD9F9F")
                CType(FindControl("txtDO" & l & "_2"), TextBox).Style.Add("border-bottom", "thin dotted #AD9F9F")
                CType(FindControl("txtDO" & l & "_3"), TextBox).Style.Add("border-bottom", "thin dotted #AD9F9F")
                CType(FindControl("txtDO" & l & "_B"), TextBox).Style.Add("border-bottom", "thin dotted #AD9F9F")
            Next l

我正在寻找这样的东西,看到后缀 * 它涵盖了所有字段,因此只有一行代码而不是 6 行。

CType(FindControl("txtDO" & l & "*"), TextBox).Style.Add("border-bottom", "thin dotted #AD9F9F")

这可能吗?

为什么不使用嵌套的 Foreach 循环...

Dim letters() As String = {"_D", "_C", "_1", "_2", "_3", "_B"}
For l = 7 To 11 
    For Each letter As String In letters                   
        CType(FindControl("txtDO" & l & letter).Style.Add("border-bottom", "thin dotted #AD9F9F")
    Next
Next l

简而言之,您不能像您所要求的那样用一行代码和一个 FindControl 来完成。
FindControl returns 只有一个控件可以使用。
有关详细信息,请参阅 MSDN 文档。