State Management :: User Control And ViewState/ The Parent Page Is Not "synchronized"?
Jun 15, 2010
I make a user control with DataList to expose pagining . I choose to use ViewState to save the state of pagining (TotalItems , CurentPage etc) , but it seems the view state of the parent page is not "synchronized" with the one from user control . It's basically the same situation like the example :
I have a dummy user control :
"<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>"
1) I found that my viewstate was not being persisted across postbacks for web user controls. I ensured that the Enable Viewstate property was set to true (of the page)
2) The Viewstate isnt being persisted on the 1st postback.
3) However, it is being persisted from the 2nd postback onwards.
I stepped through the code to ensure that the Viewstate had the 2 keys that I was adding on page load. However, on the 1st postback, the viewstate is empty. Everything is ok from the 2nd postback onwards.
Now here is the weird thing. First i am running it locally on the built in vs2008 web server.I load my control in fine, do a postback from a linkbutton, locally on my machine it all works fine, no issue.However when it goes onto my host, it falls over with the message:
Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.Now i also load controls dynamically and use postbacks and things in the admin area of the site...and that works fine, however my front end just keeps failing? See the code behing below:
I have been getting this error a lot lately with some of my users, and I had a couple of concerns with view state and I have read so many articles but I am still lost..
1. I use masterpage on all the pages and I need viewstate for some of the pages but..
There is a page where a user will fill out the information and then submit this data to a cgi server, and it is where I get most of the Client Disconnected errors, what would happen if I disable viewstate when they click on that button?
Now when a user browses from one page to another, does the view state from the previous page get deleted? If not how would I delete it?
Does the master page have its own viewstate? Would I be able to make sure none of items on my master page are using the viewstate?
I have an application that I am working on. We are experiencing odd outages daily. The outages actually bring down the Virtual Servers (web farm of 4 VMs). The last odd metric before VM becomes inaccessible is that disk I/O is at 100%. While discussing this with the client, an idea was thrown out that I wouldn't have considered because I have never heard of such a thing. The idea was that our immense ViewState (yes I will be working on reducing that in the next release) overwhelmed the server or something and the server needed to start writing the ViewState to a file in a temporary folder somewhere. The thought was that when the server started to get overwhelmed, it would have to queue requests and would run out of memory and need to start using disk.
My application is poorly written and the viewstate is completely overused. However, it works 23+ hours of the day including through peak times without problems. But I have never heard of IIS or ASP.NET writing information to files on the server while queueing requests. I had no answer for this seemingly outrageous theory. Can anyone confirm for me that this is not how ASP.NET (2.0) or IIS are written?
I haveMaster Page -> ASPX page -> User ControlUser control page is contains all dynamic bind controls (e.g Repeater) depended on ASPX Page (Only one parameter say ItemNo)The problem is, if I bound user control on page load event with passing respective parameters then it's create to much view state (I checked source file and it's almost 1.5 MB)In other way if I put one textbox, and a command button and I pass required parameter on button click and load the control then page size is ok (I checked and it's < 500KB)
I have a page that loads a usercontrol dynamically. Depended on the user's actions, this control may be unloaded in Page_PreRender and a different control may be loaded instead. I am attempting to use the solution outlined by Mark DotNet Evans in this post: http://forums.asp.net/p/1491790/3814320.aspx
This all works great, except if the user clicks the refresh button in the browser just after the change of usercontrol. Then, I get an error
Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. ...
I assume the error is caused by the browser re-posting the request with the old viewstate that matched the control tree when the page was loaded, but no longer does. How can I prevent getting an error when the user reloads the page?
I have a simple search page with a drop down list that I would like the value to persist on refresh..basically the user will select their location from the dropdownlist and this will be used to populate a gridview. After this the page is set to refresh at a set interval and use the same location data initially selected by the user. However the initial selection is lost each time the page refreshes.
p.s system is to old for ajax!
<meta http-equiv="Refresh" content="300" /> <script runat="server"> Dim connectionString As String = ConfigurationManager.ConnectionStrings("****").ConnectionString Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) If Not IsPostBack Then Dim conn As SqlConnection conn = New SqlConnection(connectionString) Dim Locationcommandtext As String Locationcommandtext = "SELECT * FROM [Location] ORDER BY [Location]" Dim loccomm As SqlCommand loccomm = New SqlCommand(Locationcommandtext, conn) Dim reader As SqlDataReader Try conn.Open() reader = loccomm.ExecuteReader() Locations.DataSource = reader Locations.DataValueField = "LocationID" Locations.DataTextField = "Location" Locations.DataBind() Catch ex As SqlException Response.Write("SQL Error: " & ex.ToString()) Finally conn.Close() End Try Else '"Viewstate should kick in here" End If End Sub </script>
We have a web site that implements a custom SiteMapProvider using a User Control added in the master page. I need to be able to limit the sitemap nodes added depending on the logged in user, that is, certain users should not see certain sitemap nodes. Currently, the login processing code determines if users are in the certain category or role and then sets a value in session state, for example, Session["UserInRoleXXX"] = "Yes"; I tried changing the code in the user control to check the session state, but I got the following error: NullReferenceException ... Object reference not set to an instance of an object." Can session state be accessed in a user control?
I want to know that when we create custom controls, then is there State Management through ViewState done automatically or we have to handle it explicitely ?Since i have created Custom Controls that is behaving as if it is not maintaining its state on PostBack.
I have created a matser page with a two radio buttons, text box and a button. Whenever user sets some values to these control and clicks the button, i will navigating him from one content page to another based on the data he has entered. The problem is after the content page load, the values selected/given in the controls(radio button, text box) are getting cleared.
I have a page with a number of user controls, In one of my user controls I have a button event. I turn on output cache for the user control that has the button and vary by control using the ID property of a hidden field control in the user control. whenever I turn on the output cache my button event doesn't fire.
i would like to ask about how can i open user control page when i click a button on parent page, also, can i call parent's method from user control page and then refresh parent page?
I start with a blank ASP.NET page where I disable ViewState for the whole page with EnableViewState=False and even ViewStateMode=Disabled.keep adding various controls to the page -- Label, Table, Calendar, TextBox, DropDownList.Everything looks good, i.e. my __VIEWSTATE tag fluctuates between 24 and 28 characters.As soon as I add a single RadioButton (or CheckBox), the __VIEWSTATE shoots up to 130 characters. And it keeps growing by over 100 characters every time I add another RadioButton.
I have a code like this in the Me.LoadComplete event.
[Code]....
Now I would like to set this viewstate("data") = nothing on a certain button click in a user control (.ascx) in this page but it doesnt clear the viewstate. What am I doing wrong? In the onClick even of the button in the .ascx I write Me.viewstate("data") = Nothing
I want to use textbox value after I visit from current to other page then again to current page using viewstate but value should be the one when I was current page last time.
I am creating a simple string of values that get added to a label after a post back. I am setting the values thorugh ViewState. However, my appended values do not get updated until AFTER the 2nd postback. Example:
On Page_Load the label displays a "0";
If I enter a "1" in the text box and click the button the label still displays a "0";
If I click the button again (the 2nd postback) then my label correctly displays "0,1"; This works for whatever value I enter after. i.e. "0,1,35,hello world", etc.
I am developing a a web application of a general store where the operator has to enter the things what customer has purchased. Like daily usage item,or anything. So I have form in which I first ask how much item u wannt to register...(if he has 20-30 number of items then operator will enter 20-30 then in gridview 20-30 item are opened. With bind dropdownbox containing name of item ,then textboxs containing mrp, value, stock avail of that item. Here is the link for demo. [URL]. Problem is suppose the operator enter the value above 20, then viewstate size id about 1.50Mb that's too heavy. [Code]....
I stored a list<mytype> object in a viewstate. Type of list<mytype> comes from a public structure which is defined at page.
When I try to convert viewstate to a list<mytype> object it cause error.
Public struct mytype {....} Page_load() { list<mytype> obj = new list<mytype>(); viewstate["mystate"]=obj } My_function(){ list<mytype> tempobj = new list<mytype>(); tempobj = (list<mytype>)viewstate["mystate"];// this line cause error ! }
I want to store List<Class> object to ViewState, when i try to do this than its giving me error to make class serialize,but my class is partial class so didn't get serialize keyword on class how can i store List object to viewstate.