0

イベント ハンドラーがある日は機能し、コードを変更しなければ次の日には機能しなくなるのはなぜですか?

私は何度も問題に遭遇しましたが、常に遊んでいる必要があり、どういうわけかイベントハンドラーが魔法のように再び機能します。以下は、これが今日私に再び起こった例です。この種の問題をすばやく解決する方法を知っていますか?

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">
    Link
</asp:LinkButton>

このメソッドにブレークポイントを設定しましたが、ヒットすることはありません。

protected void LinkButton1_Click(object sender, EventArgs e)
{
    // snip
}

ソリューションのクリーニング、すべての再構築などを試みました。ここに洞察はありますか?

編集:

はい、AutoEventWireup は true に設定されています。その他のシステム/開発環境の変更はありません。.NET 3.5 を使用しています。

4

4 に答える 4

1

コードは変更されていないとおっしゃっていましたが、このページAutoEventWireupで設定されていることを確認する必要があります。trueまた、web.config をチェックして、この属性がfalseアプリケーション全体のものではないことを確認してください。

編集:

あなたができる最善のことは、あなたがここにいることに頼らないことAutoEventWireupです。ページのオーバーライドに明示的なイベント ワイヤアップを追加するOnInit必要があります。これはより明確であり、パフォーマンスが向上します。表示されているエラーが表示される理由はわかりませんが、次のようなことを行うとエラーがなくなることはほぼ保証できます。

protected override void OnInit(EventArgs e)
{
    this.LinkButton1.Click += new EventHandler(this.LinkButton1_Click);
}
于 2009-01-26T16:01:38.260 に答える
1

これが .NET 1.1 アプリケーションの場合は、OnInit メソッドにイベント ハンドラーがあることを確認してください。VS.2003 には、イベントが取り除かれるバグがありました。2.0 アプリケーションの場合、デザイナーが pagename.aspx.designer.cs (または .vb) でのイベント生成に干渉するというカスタム コントロールの問題を見てきました。エラー リストを確認し、「デザイナー ファイルの生成に失敗しました」という警告を探します。これは、.NET 3.5 にも当てはまります。

于 2009-01-26T16:06:48.623 に答える
0

Kieran のコメントは正しかった...何かが実際に変わった! そこに大きなうわー...

TFS チェックイン アラートが迷惑メール フォルダに入ってしまい、愚かなことにファイルの履歴を比較しませんでした。同僚によって分離コードで EnableViewState が false に設定されました。

補足として、彼がこれを行ったのは、viewstate を有効にした場合の応答サイズが 10% に減少したためです。イベント処理の代わりにクエリ文字列変数を使用して、同じ問題を解決しました。

しかし、すべてのアイデアに感謝します。良いことに、私はこのことにあまり時間を無駄にしませんでした。

于 2009-01-26T19:44:57.653 に答える
0

aspnet_clientフォルダーは、サーバーにインストールされている .NET Framework のバージョンと一致していますか? 2.0 より前の .NET フレームワークを使用している場合、フレームワークとaspnet_clientスクリプトの間でこのバージョンの不一致が問題を引き起こすことが知られています。

于 2009-01-26T16:01:43.190 に答える