Frage

******************** Edit 2 ********************** Ich dachte, das Problem ... Aber ich weiß nicht, wie die Auswirkungen. Ich testete unsere iPhone mobile Anwendung früher gezielt und mit einem Plugin Firefox User Agent String als iPhone zu maskieren.

.Net wurde infact nicht den erforderlichen Code für die Post Rücken basierend Erzeugung auf diesem Stück Information allein.

Ich mache das aber nicht gefallen, weil da das iPhone und andere Multimedia-Geräte Javascript interpretieren kann, ASP.net jede Anwendung bricht, die auf dem Server erzeugt Javascript verlässt sich laufen zu lassen.

Also, wenn die Gemeinde es erlaubt, ... würde Ich mag meine offizielle Frage ändern ... zu Warum wird ASP.net Javascript nicht für bestimmten Browser erzeugen und wie kann ich dieses „Feature“ ausschalten.

*************** End Edit 2 ***************

Ich habe ein seltsames Problem. Ich kopierte einigen Arbeitscode von meinem Remote-Host auf dem Computer bei der Arbeit. Wenn ich versuche, um die Seite zu verwenden, ich bin ein Javascript-Fehler bekommen

__doPostBack is not defined
javascript:__doPostBack('ctl00$ContentPlaceHolder1$login','')()()

Wenn ich einige der Ausgabeseite Quelle, sicher genug gibt es keine Server-Seite erzeugt Javascript.

Ich habe versucht, eine einfache Seite zu erstellen:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="jsTest.aspx.vb" Inherits="_jsTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="tbTest" runat="server"></asp:TextBox><br />
        <asp:LinkButton ID="linkTest" runat="server">LinkButton</asp:LinkButton>
    </form>
</body>
</html>

Codebehind:

Partial Class _jsTest
    Inherits System.Web.UI.Page
    Protected Sub linkTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles linkTest.Click
        Response.Write(tbTest.Text)
    End Sub
End Class

Immer die gleichen Fehler.

Ich habe versucht einen Neustart (hey, es funktioniert die Hälfte der Zeit), ausgeräumt alles von App_Code, global.asax und web.config, hinzugefügt, um eine Textbox mit Autopostback = true ... Ich bin aus Ideen.

Kann jemand etwas Licht auf, was hier passiert?

************** Weitere Informationen ************** Ich habe gerade versucht, alles wieder in IE und es funktioniert wie erwartet, die Seite Quelle zeigt:

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTkxNTA2MDE2NWRkxhZMwlMVwJprcVsvQLJLrTcgaSM=" />

<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>
<div>
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwK20LZAAuzRsusGAsz0+6YPxxO+Ewv1XsD5QKJiiprrGp+9a3Q=" />
</div>

Während die Quelle in Firefox zeigt nur:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTkxNTA2MDE2NWRkxhZMwlMVwJprcVsvQLJLrTcgaSM=" />

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwK20LZAAuzRsusGAsz0+6YPxxO+Ewv1XsD5QKJiiprrGp+9a3Q=" />

Speichern der Webseiten auf dem Desktop und Öffnung im Notizblock zeigt die gleiche Sache ...

War es hilfreich?

Lösung

Das Problem ist die Standardmethode ASP.net unbekannten Browser ... wie das iPhone behandelt. Auch wenn es schön sei, unbekannter Browser Javascript könnte davon ausgehen, verwenden ... Sie können festlegen, welche Fähigkeiten, die ein Browser im Abschnitt von web.config oder machine.config hat.

Schauen Sie sich http://slingfive.com/pages/code/browserCaps/ eine aktualisierte Browsercaps-Konfigurationsdatei für asp.net

Hier ist ein Beispiel für einen Fall GECKO-basierter Browser (Netscape 6+, Mozilla / Firefox, ...) entsprechen

<case match="^Mozilla/5\.0 \([^)]*\) (Gecko/[-\d]+)(?'VendorProductToken' (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))?">
                browser=Gecko
                <filter>
                    <case match="(Gecko/[-\d]+)(?'VendorProductToken' (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))">
                        type=${type}
                    </case>
                    <case> <!-- plain Mozilla if no VendorProductToken found -->
                        type=Mozilla
                    </case>
                </filter>
                frames=true
                tables=true
                cookies=true
                javascript=true
                javaapplets=true
                ecmascriptversion=1.5
                w3cdomversion=1.0
                css1=true
                css2=true
                xml=true
                tagwriter=System.Web.UI.HtmlTextWriter
                <case match="rv:(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
                    version=${version}
                    majorversion=0${major}
                    minorversion=0${minor}
                    <case match="^b" with="${letters}">
                        beta=true
                    </case>
                </case>
            </case>

Andere Tipps

Bevor Sie Firefox neu zu installieren, führen Sie es im Debug-Modus (ich glaube, es Debug-Modus genannt). Es stellt sich alle Plugins aus und das kann Ihnen helfen, es verengen ein wenig nach unten. Was ist mit anderen Browsern wie Chrome oder Safari?

Auf der Grundlage der neuen Informationen, ich denke, es ist klar, dass dies ein Problem ist, Firefox (vielleicht haben Sie eine Add-on Blockierung JS), und keine Programmiersprache Frage. Ich bekomme gute Ergebnisse mit Ihrem Code mit VS 2008 und FF3 auf XP Pro, wie ich erwarten würde die meisten jemand anderes es versuchen.

Sie können versuchen, Firefox neu zu installieren, stellen Sie sicher, dass JS auf allen anderen Seiten funktioniert, stellen Sie sicher, localhost nicht unterschiedliche Sicherheitsberechtigungen ...

Sie haben AutoEventWireup auf false gesetzt, aber nicht außer Kraft setzen von OnInit das Ereignis zu befestigen. Versuchen Sie, die AutoEventWireup auf true gesetzt.

Edit: Von den weiteren Informationen könnte es sein, dass es falsch Firefox im Brower Fähigkeit Abschnitt Ihrer machine.config identifiziert wird. (Oder web.config).

Es könnte auch sein, dass Sie JavaScript in Firefox deaktiviert ist, und somit .NET ist die Bestimmung, dass es keinen Sinn, die Javascript Sachen machen, und sollte einen anderen Ansatz verwenden Umgang Postback, wenn es so etwas ist.

Sind Sie sicher, dass Sie ASP.NET auf Ihrem Webserver installiert haben?

Es sieht aus wie die __doPostBack() Funktion nicht erzeugt werden, da Sie keine serverseitige Ereignisse haben, die sie benötigen.

ASP.NET mag nur die __doPostBack () Funktion zu generieren, wenn Sie Ereignis-Listener haben gezeichnet, dass es müssten ordnungsgemäß funktionieren.

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