Probleme mit asp: Button OnClick-Ereignis
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?
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
seinpublic 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.