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 ответа:
Просто используйте это свойство для хранения информации:
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 }