Frage

Ich habe die AutoPostBack Eigenschaft eines meiner Form von Textboxen aktiviert, die nach w3 Schulen sollte nur ein Postback auslösen, wenn ich oder Tab-Taste bestätigen.

Ich rufe auch eine __doPostBack() auf pageload gegeben, eine Antwort des Benutzers auf eine Javascript-Eingabeaufforderung. Wenn ich das tun, die Request.Form['__EventTarget'] ist nicht das, was ich gesetzt in dem Aufruf von __doPostBack zu sein.

Die eigentliche Frage ist für mich, wenn ich das Textfeld des Autopostback-Attribut auf false gesetzt, das Problem mit der Pageload __doPostBack Anruf geht weg. Dies ist kein Verhalten, das ich erwartet hatte. Irgendwelche Ideen, was das Problem verursacht? Warum sollte die Autopostback aktiviert haben keinen Einfluss?

Hier ist ein Teil des Codes:

asp:TextBox runat="server" ID="userName" OnTextChanged="UpdateTable" AutoPostBack="true"
script type="text/javascript"
        //![CDATA[
        var theForm = document.forms['form1'];
        if (!theForm) {
            theForm = document.form1;
        }
        function __doPostBack(eventTarget, eventArgument) {
            if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
                theForm.__EVENTTARGET.value = eventTarget;
                theForm.__EVENTARGUMENT.value = eventArgument;
                theForm.submit();
            }
        }
        //]]
/script
input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value=""
input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value=""
input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" 
function jsPrompt(name) {
  var ans = confirm('really follow ' + name + '?');
  if (ans) {
    __doPostBack('follow', name);
  }
}

Dann in der Code-Behind-Seite:

if (Request.Form["__EventTarget"] == "follow")
  followPerson(Request.Form["__EventArgument"]);                

Aber ich bekomme immer wieder, dass Request.Form["__EventTarget"] "," ist, und ich habe durch die Javascript in dem Debugger trat. Kurz vor form.submit(), sind die Argumente nicht ","

War es hilfreich?

Lösung

OK ... wo man anfangen soll. Was genau wollen Sie hier erreichen? Ich kann Request.Form ohne berechtigten Grund zu sehen denken [ „__ Eventtarget“] in ASP.NET. Das einzige Mal, dass ich gesehen habe, ist, wenn eine alte Schule ASP oder PHP-Programmierer erste ASP.NET lernt und hat nicht ganz die ereignisgesteuerte Modell begriffen, dass liegt unter ASP.NET.

Auch, was meinst du, wenn Sie sagen, Sie rufen __doPostBack ()? Sie sollten dies nicht manuell müssen entweder tun. Wenn Sie wirklich eine Postbacks in Javascript erstellen wollen, wo es in der Regel nicht geschieht, müssen Sie verwenden ClientScriptManager.GetPostBackEventReference (). Also, diese Methode verwenden und es Ihre TextBox übergeben Sie den richtigen Postback-Code zu erhalten. Dann können Sie es überall in der Client-seitiges Script auszuführen.

Hope, das hilft. Wenn ich das Szenario falsch verstanden haben fügen Sie bitte einen Kommentar und ich werde noch einmal versuchen. :)

Andere Tipps

Wo ist der Code, den Sie verwenden? Stellen Sie sicher, dass Sie mit so etwas wie:

var element = $get("<%= textbox1.ClientID %>");
__doPostBack(element.name, ''); // second param is command name/argument separated by $

HTH.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top