みなさんこんにちは!ヒロポンです!
WinForms の DataGridView。行をクリックすると CellClick が飛んできて、e.RowIndex でその場で行が取れる。業務系の画面を作ってきた人なら、息をするように書いてきたやつですよね。
その感覚のまま ASP.NET Razor の onclick を書くと、見事に詰まります。俺も最初これで半日溶かしました。「ボタン押したのにハンドラが動かん」。「押すたびに値が消える」。極めつけは「e.RowIndex はどこ行った??」って。
この記事は、前に書いたDataGridView のクリック3アクションの続き。Web 側に足を伸ばす入口です。asp.net razor onclick でつまずく構造差を3点、WinForms の既知の言葉で翻訳していきます。脅さないので安心してください。
忙しい人向けに最初にまとめ
- 構造差1: サーバへ往復する — WinForms のクリックは同一プロセス内で即ハンドラ。Razor の onclick は HTTP でサーバへ往復する。
- 構造差2: ページは毎回作り直される — クリックのたびにページが新しく生成される。状態は自分で持ち回る(TempData / セッション / DB)。
- 構造差3: e.RowIndex がない — イベント引数オブジェクトは来ない。行IDを hidden や data 属性に埋めて、引数として受け取る。
この記事の位置づけ





