0

以下のコードをご覧ください。

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim c1 As New CheckBox
        c1.ID = "Test1/" 'line 7
        PlaceHolder1.Controls.Add(c1)
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        For Each c As Control In Page.Controls
            For Each d As Control In c.Controls
                For Each f As Control In d.Controls
                    For Each g As Control In f.Controls
                        For Each h As Control In g.Controls
                            If TypeOf h Is CheckBox Then
                                Dim cbox As New CheckBox
                                cbox = CType(h, CheckBox)
                                MsgBox(cbox.Checked) 'Line 20
                            End If
                        Next
                    Next
                Next
            Next
        Next
    End Sub
End Class

default.aspxページにはPlaceHolder1というプレースホルダーがあります。20行目のMessageBoxはTrueを出力しています。次のWebページから引用した以下の引用をご覧ください:http://msdn.microsoft.com/en-us/library/system.web.ui.control.id.aspx

「このプロパティの有効な値は、英数字とアンダースコア文字(_)の組み合わせのみです。スペースやその他の無効な文字を含めると、ASP.NETページパーサーエラーが発生します。」

/は英数字ではないので、メッセージボックスをどのように真に出力できますか?7行目を:c1.ID = "Test1:"に変更すると、予想どおりにfalseが出力されます(:(コロン)は英数字ではないため)。一貫性はありません。何かが足りません。

4

0 に答える 0