Frage

Hier ist meine Taste

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething(10)" runat="server" />

Hier ist die Serverfunktion

public void doSomething(int num)
{
    int someOtherNum = 10 + num;
}

Wenn ich versuche, den Code, den ich die Fehlermeldung „Methodennamen Expected“ für die Zeile zu kompilieren:

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething(10)" runat="server" />

Was mache ich falsch? Bin ich nicht erlaubten Werte an den Server von einem Ereignis OnClick passieren?

War es hilfreich?

Lösung

Es gibt zwei Probleme hier. Erstens hat das Onclick-Ereignis eine bestimmte Signatur. Es ist

MethodName(object sender, EventArgs e);

Zweitens, im Markup, müssen Sie die Methodennamen ohne Klammern oder params nur passieren.

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething" runat="server" />

Dann wird Ihr Code-Behind wie folgt ändern:

public void doSomething(object sender, EventArgs e)
{
    ....
}

Die Übergabe von Parametern auf ein Client-Seite Click-Ereignishandler erfolgen kann, in diesem Fall OnClientClick, aber nicht auf den Server-Seite-Handler.

Andere Tipps

Es gibt einfachere Lösung. Sie könnten ASP Schaltfläche On-Command-Ereignis verwenden. Mehr dazu hier: http: // msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx

OnClick des Button ist ein Event-Handler. Haken Sie eine Funktion einen Eventhandler benötigen, den Vertrag zu gehorchen, die von den Eventhandler, wie erwähnt von Jose. Beim Klicken auf eine Funktion des Formats void doSomething(object sender, EventArgs e) gebunden. So Ihre Funktion im gleichen Format sein sollte.

Ich bin nicht sicher, warum wollen würde, einen Parameter in den Ereignishandler zu übergeben. Wenn Sie etwas manuplation nehmen wollen, müssen Sie tun, dass eine andere Steuerung.

<asp:TextBox ID="txtNumber" runat="server" /><asp:Button ID="myButton" Text="Click Me" OnClick="doSomething" runat="server" />

Und in dem Code

public void doSomething(object sender, EventArgs e)
{
int AnotherNumber=   Int32.Parse(txtNumber.Text)+10;
}

Sie müssen Ihre Methode der Strukturänderung wie

sein
public void doSomething(object sender, EventArgs e)
    {
        ....
    }

und Parameter für das Bestehen benötigen Sie eine Arbeit um wie folgt aus:

Wenn Sie zum Beispiel in einer HTML-Steuerung Sie können aber Ihre Parameter in einem Attributwert (wie ID in diesem exapmle) und rufen Sie sie dann in den Server-Seite-Handler

das heißt eine Steuerung macht den Stil Farbwechsel

HTML:

<a href="" id="Grey" runat="server" onserverclick='ApplyStyleEvent'></a>

Code:

protected void ApplyStyleEvent(object sender, EventArgs e)
{
    Profile["SelectedStyle"] = ((HtmlControl)sender).ID;
    Response.Redirect("");
}

und so weiter.

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