Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 868241
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T10:06:24+00:00 2026-05-15T10:06:24+00:00

Using reflector I found the following code in the System.Web.UI.WebControls.Parameter class: internal void UpdateValue(HttpContext

  • 0

Using reflector I found the following code in the System.Web.UI.WebControls.Parameter class:

internal void UpdateValue(HttpContext context, Control control)
{
    object obj2 = this.ViewState["ParameterValue"];
    object obj3 = this.Evaluate(context, control);
    this.ViewState["ParameterValue"] = obj3;
    if (((obj3 == null) && (obj2 != null)) ||
            ((obj3 != null) && !obj3.Equals(obj2)))
    {
        this.OnParameterChanged();
    }
}

The line

this.OnParameterChanged();

is what triggers the ParametersChanged-event in the end, as I understand (through this._owner.CallOnParametersChanged() in OnParameterChanged).

Now my question is: what happens if EnableViewState is set to false (e.g. on the whole page)? And as an addendum: I am using ControlParameters pointing at the SelectedValue of a DropDownList.

I assume this would mean:

  1. obj2 would either be the value that has been set earlier in the same request (i.e. UpdateValue has been called before) or null if no other value has been set yet.
  2. As a DropDownLists SelectedValue cannot be null obj3 will never be null.
  3. OnParametersChanged will always be invoked the first time UpdateValues is called in any request.

But if the same entries are loaded into the DropDownList during a PostBack ASP.NET retains the selection in the list across the PostBack even if ViewState is disabled (I can only guess how that works but it does…).

This comes down to the following: if ViewState is disabled and the same values are being loaded into the DropDownList on every request and the user had chosen entry X “long ago” and triggered a PostBack by other means than changing the selection in the DropDownList ASP.NET would fire a ParametersChanged-event on the ParameterCollecion (because of #3 in the list above) although in my understanding the parameter did not change its value.

Am I wrong or does this mean I cannot (should not) disable ViewState if this behaviour is causing trouble?


UPDATE (not directly related to the question)

Just to get rid of the question how the DropDownList preserves the selected value through a post back if viewstate is disabled: by its implementation of IPostBackDataHandler…

Reflector reveals (in DropDownList):

protected virtual bool LoadPostData(string postDataKey,
        NameValueCollection postCollection)
{
    string[] values = postCollection.GetValues(postDataKey);
    this.EnsureDataBound();
    if (values != null)
    {
        base.ValidateEvent(postDataKey, values[0]);
        int selectedIndex = this.Items.FindByValueInternal(values[0], false);
        if (this.SelectedIndex != selectedIndex)
        {
            base.SetPostDataSelection(selectedIndex);
            return true;
        }
    }
    return false;
}

So it essentially retrieves the value of the selected item in the POSTed data and if it can find an item with this key in the list of items the DropDownList contains it sets it as selected.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T10:06:25+00:00Added an answer on May 15, 2026 at 10:06 am

    You are correct: you cannot disable viewstate if you want the ASP.NET web control ‘changed’ events and behaviors to work.

    The basic mechanism they use to determine whether there has been a change is to compare the value serialized in viewstate to the equivalent posted value (if any). TextBox.TextChanged (for example) spells this out clearly in its class documentation:

    A TextBox control must persist some
    values between posts to the server for
    this event to work correctly. Be sure
    that view state is enabled for this
    control.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 448k
  • Answers 448k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer the issue was with a super method that was toggling… May 15, 2026 at 7:55 pm
  • Editorial Team
    Editorial Team added an answer Yes this has worked for me in the past. So… May 15, 2026 at 7:55 pm
  • Editorial Team
    Editorial Team added an answer I got it working by: Removing "float:left" on your "tabs"… May 15, 2026 at 7:55 pm

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.