動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
技術記事

WinForms の DataGridView CellClick に慣れた業務SEが ASP.NET Razor の onclick で戸惑う3つの構造差

バイブス父さん
現役の業務SE
2026年6月10日13 min read
WinForms の DataGridView CellClick に慣れた業務SEが ASP.NET Razor の onclick で戸惑う3つの構造差

みなさんこんにちは!ヒロポンです!

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 属性に埋めて、引数として受け取る。

この記事の位置づけ


この記事のコードと手順は ぜんぶ動作検証済み。 安心して現場で試してくれ。
バイブス父さん

現役の業務SE。C# / SQL Server 保守の現場から、コードも人もキャリアも全部書く。 実体験ベース。

運営者について