ASP Postback删除数据

时间:2014-08-18 20:38:02

标签: c# asp.net

我正在使用Web Forms,我在使用Drop-down和post back功能方面遇到了一些麻烦。发生的事情是每个下拉列表都有多种方法,因此当您选择下拉列表索引时,它将转到所述方法并填充选择。

问题是显示这些选择的方法是AutoPostBack(据我所知),它会回发到后端代码并再次运行它。当我尝试将数据保存到模型时会产生问题:

public class List_id_model
{
    public List<int> client_id { get; set; }
    public List<int> pro_id { get; set; }
}

每次必须使用它时,我都必须重新实例化对象,然后覆盖模型中的数据。我该如何防止这种情况发生?

以下是我的下拉列表的aspx代码:

 <asp:DropDownList ID="DropDown_Project" runat="server" AutoPostBack="true" AppendDataBoundItems="true" DataTextField="Company_Name" DataValueField="id" Width ="200px" OnSelectedIndexChanged="DropDown_Project_SelectedIndexChanged" >
                        <asp:ListItem Text="---Select---" Value="0" />   
                 </asp:DropDownList>

这是背后的代码:

protected void DropDown_Client_SelectedIndexChanged(object sender, EventArgs e)
{
List_id_model client_list = new List_id_model();
client_list.client_id = new List<int>();
client_list.client_id.Add(value);
}

protected void DropDown_Project_SelectedIndexChanged(object sender, EventArgs e)
{

List_id_model client_list = new List_id_model();
client_list.pro = new List<int>();
client_list.pro_id.Add(value);
}

我想要的是以某种方式避免重新实例化&#34; List_id_model&#34;每次我需要添加它,因为这将转储所有当前数据。

如果您对我的问题有任何疑问,我将非常乐意明天早上回复您,因为我有更多时间来解决这个问题。

1 个答案:

答案 0 :(得分:2)

您应该将数据存储在某个持久存储中。在您的情况下,您应该使用ViewState。例如:

public List_id_model Model
{
  get
  {
    List_id_model model = ViewState["List_id_model"] as List_id_model;
    if (model != null)
       return model;        
    return new List_id_model();
  }
  set
  {
    ViewState["List_id_model"] = value;
  }
}

protected void DropDown_Client_SelectedIndexChanged(object sender, EventArgs e)
{
    List_id_model client_list = Model;
    if (client_list.client_id == null)
       client_list.client_id = new List<int>();
    client_list.client_id.Add(value);
    Model = client_list;
}

这段代码是为了演示方法,我没有在IDE中尝试过,很抱歉,如果你发现了一些拼写错误等。