DoPostBack sometimes isn't in HTML

Discussion in 'ASP .Net' started by Kevin, Feb 4, 2009.

  1. Kevin

    Kevin Guest

    Hey guys,

    I really can't narrow this one down but I hope someone can help. The
    problem is intermittent and debugging is almost impossible. Nothing
    strange in the IIS logs. Basically, sometimes the __doPostBack JS
    method isn't injected into the HTML. Here are 2 HTML snippets of the
    two different outputs of the same file. First one is the way it should
    look:

    <form name="aspnetForm" method="post" action="home.aspx?id=8338"
    id="aspnetForm">
    <div>
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET"
    value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT"
    value="" />
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
    value="[...blah blah...]" />
    </div>

    <script type="text/javascript">
    <!--
    var theForm = document.forms['aspnetForm'];
    if (!theForm) {
    theForm = document.aspnetForm;
    }
    function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
    theForm.__EVENTTARGET.value = eventTarget;
    theForm.__EVENTARGUMENT.value = eventArgument;
    theForm.submit();
    }
    }
    // -->
    </script>

    AND here is a snippet, calling exactly the same file... and the
    __doPostBack isn't rendered.

    <form name="aspnetForm" method="post" action="/home.aspx?id=8338"
    id="aspnetForm">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
    value="[...blah blah...]/>

    HERE is the C# code for the form that is supposed to trigger the
    __doPostBack to be injected:

    < %@ control language="C#" autoeventwireup="true"
    inherits="Controls_HeaderSearch" CodeFile="HeaderSearch.ascx.cs" % >
    < asp:TextBox ID="searchBox" runat="server" CssClass="searchbox"
    MaxLength="128" Text="< %$ Resources:UI, Search % >" / >
    < asp:LinkButton ID="btnSearch" runat="server"
    CssClass="searchButton" OnClick="btnSearch_Click"
    CausesValidation="false" / >


    What could possibly be causing the __doPostBack to not show? It's
    almost like .Net is just getting lazy on some requests. But we all
    know that's not possible... or is it? :-b

    Other possible factors (but don't think these would cause it)
    We are running Ektron, but Ektron doesn't control whether the
    __doPostBack appears, our C# code does.
    Out content is cached over the Akamai network, but Akamai
    shouldn't be stripping out content.

    Anyone have any ideas?

    Thanks so much,
    Kevin
     
    Kevin, Feb 4, 2009
    #1
    1. Advertisements

  2. Kevin

    miher Guest

    Hi,

    AFAIK ASP.Net is clever enought to render the __doPostBack only when it is
    needed. (So for example if You put a dropdown to an empty page, no
    __doPostBack will be rendered, but if You turn AutoPostBack on, You will get
    the function.) I think if You drop a scriptmanager to the page, You will get
    the function for sure.

    Hope You find this useful.
    -Zsolt
     
    miher, Feb 4, 2009
    #2
    1. Advertisements

  3. Kevin

    George Guest

    __doPostBack only shows up when it needs to...

    If for example you have a LinkButton then it will be there.
    If you have regular button then the form is submitted the usual way via
    <input type="submit"> and __doPostBack is not injected.

    If you need to have it in HTML then you have 2 ways.
    1. Simply dump empty link button on your form. You can even add
    style="disply:none" to it.
    2. use ClientScriptManager.GetPostBackEventReference



    George


     
    George, Feb 4, 2009
    #3
  4. Kevin

    Kevin Guest

    Thanks George and Miher,

    I've actually read about the GetPostBackEventReference in a few other
    posts. But the issue is that _doPostBack DOES in fact show up... just
    sometimes it doesn't. As far as I know, there aren't any differences
    in the requests.

    Got anything else up your sleeve?

    Thanks,
    Kevin
     
    Kevin, Feb 4, 2009
    #4
  5. Kevin

    George Guest

    Very possible that you have a LinkButton wich is set Visible/Not Visible in
    the code (see property Visible)

    Hence you have __doPostBack shows up and then not shows up.

    George.
     
    George, Feb 4, 2009
    #5
  6. Kevin

    Kevin Guest

    Yes, but it is always true, based on the web.config which hasn't
    changed in months:

    Visible = Boolean.Parse(ConfigurationManager.AppSettings
    ["HeaderSearchVisible"]);

    The search box and button always show up. But when this problem
    occurs, submitting the form causes a JS error since the doPostBack
    function isn't there.

    Any other ideas?
     
    Kevin, Feb 4, 2009
    #6
  7. I have never seen this personally. Is this only on dev, or also on
    production?

    One thing that happens routinely on dev, at least in certain situations, is
    the ASP.NET temp files become corrupt. Very common with the Profile bits,
    which has caused me to always use a custom Profile provider. Silverlight has
    some similar tendencies during dev.

    ONe way around the error is remove the page from the site and compile. Then
    add back. If this does not solve the problem, remove, compile, create a new
    page with the same name and copy over the code.

    If that does not work, debug is the option, but I am not sure how you would
    debug a "fail to create postback" situation. In fact, I would have to search
    and see if there is a debug ASP.NET runtime available for "end user" use,
    with end user = developer.


     
    Cowboy \(Gregory A Beamer\), Feb 5, 2009
    #7
  8. Kevin

    andahope

    Joined:
    Nov 2, 2009
    Messages:
    1
    Likes Received:
    0
    Hi - I am having this same issue and cant tract it down - has anyone found a solution or cause here?

    The page should have this function created as it has items on it which require a post back, so its not a matter of adding something that requires a postback.. this happens randomly as far as im aware.. sometimes the pages work (have the function) and sometimes they dont. clearing the server cache or resetting the app pool seems to fix it..

    any more ideas as to why?
     
    andahope, Nov 2, 2009
    #8
  9. Kevin

    kphani_prasad

    Joined:
    Nov 25, 2008
    Messages:
    4
    Likes Received:
    0
    Does your application use any CDN?

    Does you App use any CDN?

    ref a great article around this
    dotnetlite * com /2010/06/21
    /
    loss-of-__dopostback-code-after-protecting-a-site-with-akamai/

    Good Luck,
    HydTechie
     
    kphani_prasad, May 22, 2013
    #9
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.