Can i store a Queue in viewstate? only will store the first item i add to queue
<p>EDIT: ViewState does not change when browser is refreshed, so even if you write to viewstate it will not save the data. DOH!</p>

<p>Hey, as the question states i am trying to store a Queue in a viewstate (to track postbacks and refreshes to stop a form from resubmitting).</p>

<p>The Queue is only saving with a count of 1 (the first item that is added to it) no matter how many items i add.</p>

<p>Here is just the viewstate code:</p>

<pre><code>    // New Queue of strings
private Queue&lt;string&gt; sTemp;

 private Queue&lt;string&gt; p_tempQue
{
    set
    {
        ViewState["sTemp"] = value;
    }
    get
    {
        return (Queue&lt;string&gt;)ViewState["sTemp"];
    }
}

//BasePage constructor 
public BasePage()
 {
        //create a Queue of string
        //sTemp = new Queue&lt;string&gt;();
        this.Load += new EventHandler(this.Page_Load);
        this.Init += new EventHandler(this.Page_Init);

 }


//In the 'page_Init' event we have created a simple hidden field by name 'hdnGuid' which is attached to the page on the first hit itself. 
protected void Page_Init(object sender, EventArgs e)
{
    //initializing the hidden field

    //create a hidden field with a ID
    HiddenField hdnGuid = new HiddenField();
    hdnGuid.ID = "hdnGuid";

    //if it is the first time the page is loaded, create a new guid and assign it as the hidden field value 
    if (!Page.IsPostBack)
        hdnGuid.Value = Guid.NewGuid().ToString();

    //add the hidden field to the page
    Page.Form.Controls.Add(hdnGuid);
}

//In the 'page_Load' event we check if the hidden field value is same as the old value. In case the value is not same that means it's a 'postback'
//and if the value is same then its 'refresh'. As per situation we set the 'httpContent.Items["Refresh"]' value. 
protected void Page_Load(object sender, EventArgs e)
{
    if(p_tempQue != null)
    sTemp = p_tempQue;
    else
        sTemp = new Queue&lt;string&gt;();

    //The hdnGuid will be set the first time page is loaded, else the hdnGuid 
    //will be set after each time the form is submitted using javascript.

    //assign the hidden field currently on the page for manipulation
    HiddenField h1 = (HiddenField)(Page.Form.FindControl("hdnGuid"));
    //create an instance of the GuidClass
    GuidClass currentGuid = new GuidClass();
    //set the GuidClass Guid property to the value of the hidden field
    currentGuid.Guid = h1.Value;


    //check to see if the Queue of strings contains the string which is the current Guid property of the GuidClass
    //if the are equal, then the page was refreshed
    if (sTemp.Contains&lt;string&gt;(currentGuid.Guid))
    {
        //adds item as key/value pair to share data between an System.Web.IHttpModule interface and an System.Web.IHttpHandler interface during an HTTP request.
        System.Web.HttpContext.Current.Items.Add("IsRefresh", true);
    }
    //if they are not requal, the page is not refreshed
    else
    {
       //if the current Guid property in the GuidClass is not null or not an empty string
       //add the new Guid to the Queue
       if (!(currentGuid.Guid.Equals(null) || currentGuid.Guid.Equals("")))
          sTemp.Enqueue(currentGuid.Guid);

     System.Web.HttpContext.Current.Items.Add("IsRefresh", false);
    }

    p_tempQue = sTemp;
}
</code></pre>
