ASP.net с помощью C# сохраняем список на обратной связи


Моя ситуация выглядит так: у меня есть эти списки с данными, вставленными в них, когда пользователь нажимает кнопку Добавить, но я предполагаю, что при обратной передаче списки обнуляются. Как вы их сохраняете? Я искал ответ, но, наверное, не совсем понимаю, как использовать сеанс и т. д.

Я очень новичок в этом деле. ASP.net и, казалось бы, не намного лучше с C#.

public partial class Main : System.Web.UI.Page
{


 List<string> code = new List<string>();


protected void Page_Load(object sender, EventArgs e)
{
    //bleh   

}

protected void cmdAdd_Click(object sender, EventArgs e)
{

    code.Add(lstCode.Text);
}
3 6

3 ответа:

Просто используйте это свойство для хранения информации:

public List<string> Code
{
    get
    {
        if(HttpContext.Current.Session["Code"] == null)
        {
            HttpContext.Current.Session["Code"] = new List<string>();
        }
        return HttpContext.Current.Session["Code"] as List<string>;
    }
    set
    {
        HttpContext.Current.Session["Code"] = value;
    }

}

Это странность в ASP.NET всякий раз, когда вы программно добавляете элементы в элемент управления коллекцией (listbox, combobox), вы должны повторно заполнить элемент управления на каждой обратной связи.

Это связано с тем, что Viewstate знает только об элементах, добавленных во время цикла рендеринга страницы. Добавление элементов на стороне клиента работает только в первый раз, затем элемент исчезает.

Попробуйте это:

public partial class Main : System.Web.UI.Page
{

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                 Session["MyList"] = new List<string>();
            }   
            ComboBox cbo = myComboBox; //this is the combobox in your page
            cbo.DataSource = (List<string>)Session["MyList"];
            cbo.DataBind();
        }




        protected void cmdAdd_Click(object sender, EventArgs e)
        {
            List<string> code = Session["MyList"];
            code.Add(lstCode.Text);
            Session["MyList"] = code;  
            myComboBox.DataSource = code;
            myComboBox.DataBind();
        }
    }

Вы не можете хранить значения между задними столбцами.

Вы можете использовать сеанс для сохранения списка:

// store the list in the session
List<string> code=new List<string>();

protected void Page_Load(object sender, EventArgs e)
{
 if(!IsPostBack)
  Session["codeList"]=code;

}
 // use the list
void fn()
{
 code=List<string>(Session["codeList"]); // downcast to List<string> 
 code.Add("some string"); // insert in the list
 Session["codeList"]=code; // save it again
}