質問

ここに私のボタンがあります

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

これはサーバー関数です

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

コードをコンパイルしようとすると、エラー<!> quot; Method Name Expected <!> quot;が表示されます。行の場合:

<*>

間違っているのは何ですか? OnClickイベントからサーバーに値を渡すことはできませんか?

役に立ちましたか?

解決

ここには2つの問題があります。まず、onclickイベントには特定の署名があります。

MethodName(object sender, EventArgs e);

次に、マークアップで、括弧またはパラメーターなしでのみメソッド名を渡す必要があります。

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

次に、コードビハインドを次のように変更します。

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

パラメータの受け渡しは、クライアント側のクリックイベントハンドラ(この場合はOnClientClick)で実行できますが、サーバー側のハンドラでは実行できません。

他のヒント

より簡単な解決策があります。 ASPボタンのOnCommandイベントを使用できます。 ここについての詳細: http:// msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx

ボタンのOnClickはイベントハンドラーです。関数をeventHandlerにフックするには、言及。 OnClickは、void doSomething(object sender, EventArgs e)形式の関数にバインドされています。したがって、関数は同じ形式である必要があります。

イベントハンドラーにパラメーターを渡す理由がわかりません。何らかの操作を行いたい場合は、他のコントロールを使用して操作する必要があります。

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

コード内

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

メソッドの構造を次のように変更する必要があります

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

パラメータを渡すには、次のような回避策が必要です:

たとえば、Htmlコントロールを使用している場合は、属性値(この例ではIDなど)のパラメーター以外はサーバー側ハンドラーで取得できます

i.eスタイルの色を変更するコントロールを作成する

Html:

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

コード:

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

など。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top