Asp.net RadioButtonList值为空
我正在为多项选择建立一个网站。 我的页面包含加载页面时生成的两个RadioButtonList。 但是,当我选择item并单击按钮时,selectedItem具有空值。这是我的代码:Asp.net RadioButtonList值为空,asp.net,webforms,Asp.net,Webforms,我正在为多项选择建立一个网站。 我的页面包含加载页面时生成的两个RadioButtonList。 但是,当我选择item并单击按钮时,selectedItem具有空值。这是我的代码: public partial class WebForm1 : System.Web.UI.Page { MultipleChoiceDbContext db = new MultipleChoiceDbContext(); List<string> questionList = new
public partial class WebForm1 : System.Web.UI.Page
{
MultipleChoiceDbContext db = new MultipleChoiceDbContext();
List<string> questionList = new List<string>();
List<RadioButtonList> optionList = new List<RadioButtonList>();
List<string> answerList = new List<string>();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var query = from data in db.QAs
select data;
QA question;
int i = 1;
ListItem liA;
ListItem liB;
ListItem liC;
ListItem liD;
while (i < 3)
{
question = query.ToList()[(new Random()).Next(query.ToList().Count)];
questionList.Add(question.Question);
answerList.Add(question.Answer);
liA = new ListItem(question.A, question.A);
liB = new ListItem(question.B, question.B);
liC = new ListItem(question.C, question.C);
liD = new ListItem(question.D, question.D);
RadioButtonList rdl = new RadioButtonList();
rdl.Items.Add(liA);
rdl.Items.Add(liB);
rdl.Items.Add(liC);
rdl.Items.Add(liD);
optionList.Add(rdl);
phContent.Controls.Add(rdl);
i++;
}
}
}
protected void btnok_Click(object sender, EventArgs e)
{
for (int i = 0; i < optionList.Count; i++)
{
string content = "";
content += optionList[i].SelectedItem.Value + "<br />";
Response.Write(content);
}
}
}
public分部类WebForm1:System.Web.UI.Page
{
multiplechicedbcontext db=新的multiplechicedbcontext();
List questionList=新列表();
列表选项列表=新列表();
List answerList=新列表();
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
var query=来自db.QAs中的数据
选择数据;
质量保证问题;
int i=1;
列表项liA;
列表项库;
列表项liC;
列表项盖子;
而(i<3)
{
question=query.ToList()[(new Random()).Next(query.ToList().Count)];
问题列表。添加(问题。问题);
答案列表。添加(问题。答案);
liA=新列表项(问题A,问题A);
liB=新列表项(问题B,问题B);
liC=新列表项(问题C,问题C);
liD=新列表项(问题D,问题D);
RadioButtonList rdl=新的RadioButtonList();
rdl.Items.Add(liA);
rdl.Items.Add(liB);
rdl.项目.添加(liC);
rdl.项目.添加(盖子);
optionList.Add(rdl);
phContent.Controls.Add(rdl);
i++;
}
}
}
受保护的无效btnok_单击(对象发送者,事件参数e)
{
对于(int i=0;i ”;
回答。写(内容);
}
}
}
每次回发时,您都必须在Page\u Init
或(最新的)Page\u Load
中使用与以前相同的ID重新创建动态创建的控件。另外:当HTML被发送到客户端时,即使是您创建的所有对象(因此您的列表)也会在页面生命周期结束时被处理。那么,我该如何解决这个问题呢?为什么您需要动态创建它,为什么您不能使用gridview或repeater?为什么需要将它们存储在该列表中,可以使用var rbs=phContent.Controls.OfType().ToList()获取它们。如果使用GridView或Repeater,则必须循环GridView.Rows
或Repeater.Items
并使用row.FindControl(“RadioButtonListID”)
。这是我遇到问题时得到的第一种方法。所以我可以试着自己做。以及var rbs=phContent.Controls.OfType().ToList()的位置?您希望获取所有RadioButtonList
s的位置,以及您是否在不使用类似Repeater的webdatabound控件的情况下保持动态方法。