Asp.net 在代码文件中动态添加.net RadioButtonsList控件,在回发中没有SelectedValue

Asp.net 在代码文件中动态添加.net RadioButtonsList控件,在回发中没有SelectedValue,asp.net,vb.net,Asp.net,Vb.net,我在代码文件中动态创建的RadionButtonsList中获取SelectedValue时遇到问题。我正在将它添加到aspx页面上的占位符控件中。回发后,单选按钮将其选择保留在页面上,但我无法从代码文件中获取值 我知道我可以在HTML页面中创建RadioButtonsList,但我需要了解如何仅从代码文件中实现这一点。我遇到的真正问题更复杂。(创建true/false RadioButtonsList控件的动态数量) quick.aspx <%@ Page Title="Quiz" Ma

我在代码文件中动态创建的RadionButtonsList中获取SelectedValue时遇到问题。我正在将它添加到aspx页面上的占位符控件中。回发后,单选按钮将其选择保留在页面上,但我无法从代码文件中获取值

我知道我可以在HTML页面中创建RadioButtonsList,但我需要了解如何仅从代码文件中实现这一点。我遇到的真正问题更复杂。(创建true/false RadioButtonsList控件的动态数量)

quick.aspx

<%@ Page Title="Quiz" MasterPageFile="~/MasterPage.master" Language="VB" CodeFile="quiz.aspx.vb" Inherits="quiz" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <asp:PlaceHolder ID="testholder" runat="server"></asp:PlaceHolder>

    <asp:Button ID="lblNext" runat="server" type="submit" Text="Next" accesskey="n"/>

</asp:Content>

提交后我的输出是:“testlist:”。有什么想法吗?

您必须在触发page_load事件之前加载控件,以便loadpostbackdata有机会加载动态控件的viewstate

将动态控件移动到page_init事件后,我可以看到所选的值

 Dim testlist As New RadioButtonList 

 Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
{

    testlist.Items.Add(new ListItem("test1", "test1"))
    testlist.Items.Add(new ListItem("test2", "test2"))
    testholder.Controls.Add(testlist)

} 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
{ 

    If (IsPostBack) Then
        Debug.WriteLine(testlist.SelectedValue)
    End If

}

每次你加载一个页面,甚至是回发,你都在添加(创建)新的列表项。这太棒了!谢谢
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim testlist As New RadioButtonList
    testlist.Items.Add(New ListItem("test 1", "test1"))
    testlist.Items.Add(New ListItem("test 2", "test2"))
    testholder.Controls.Add(testlist)

    If (IsPostBack) Then
        Debug.WriteLine("testlist: " & testlist.SelectedValue)
    End If
End Sub
 Dim testlist As New RadioButtonList 

 Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
{

    testlist.Items.Add(new ListItem("test1", "test1"))
    testlist.Items.Add(new ListItem("test2", "test2"))
    testholder.Controls.Add(testlist)

} 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
{ 

    If (IsPostBack) Then
        Debug.WriteLine(testlist.SelectedValue)
    End If

}