C# 如何在页面加载后保留一个包含已保存条目的列表?

C# 如何在页面加载后保留一个包含已保存条目的列表?,c#,asp.net,list,pageload,C#,Asp.net,List,Pageload,我有一份清单: public List<string> QuestionIDs; } 我的问题是,在页面加载后,当我根据上一个问题的id调用下一个问题时,列表中根本并没有id。如何保存Id以便在加载页面后使用 您必须将列表置于视图状态 public IList<string> QuestionIDs { get { var obj = ViewState["QuestionIDs"]; if(obj == null) {

我有一份清单:

public List<string> QuestionIDs;
}


我的问题是,在页面加载后,当我根据上一个问题的id调用下一个问题时,列表中根本并没有id。如何保存Id以便在加载页面后使用

您必须将列表置于视图状态

public IList<string> QuestionIDs
{
   get
   {
      var obj = ViewState["QuestionIDs"];
      if(obj == null)
      {
         obj  = new List<string>();
         ViewState["QuestionIDs"] = obj;
      }
      return (IList<string>)obj;
   }
}
公共IList问题ID
{
得到
{
var obj=视图状态[“问题ID”];
if(obj==null)
{
obj=新列表();
视图状态[“问题ID”]=obj;
}
返回(IList)对象;
}
}

schould我还可以删除questionID=new List()的初始化;来自构造函数?是的,如果您使用我的答案中的代码,则在需要时将在属性内创建列表。
<asp:RadioButtonList ID="selectedYesNo1" runat="server" RepeatDirection="Horizontal"
                OnSelectedIndexChanged="FirstQuestionGotAnswered">
                <asp:ListItem Text="Yes" Value="1"></asp:ListItem>
                <asp:ListItem Text="No" Value="0"></asp:ListItem>
            </asp:RadioButtonList>
protected void FirstQuestionGotAnswered(object sender, EventArgs e)
        {

            QuestionID = selectedYesNo1.Text;
            QuestionIDs.Add(QuestionID);
public IList<string> QuestionIDs
{
   get
   {
      var obj = ViewState["QuestionIDs"];
      if(obj == null)
      {
         obj  = new List<string>();
         ViewState["QuestionIDs"] = obj;
      }
      return (IList<string>)obj;
   }
}