5

サーバー側のコードがマークアップから分離されるように、コード ビハインド ファイルを使用したくない人がいるでしょうか? これは、従来の ASP に対する .NET の利点の 1 つではないでしょうか。

個人的には、コードとマークアップを混在させると、コードが理解しにくくなると思います。

私はそれらのくそ <% %> (サーバー側のブロック) がマークアップと相互接続されているのを見るのが嫌いです。これは、Classic ASP との下位互換性のためだけに ASP.NET にあると思いますが、MS の例には常に、黄色の括弧が含まれています。

ここでダウンロードできるコード例を理解しようとしていますが、ここに示されているサーバー側のブレークのいずれかが web.config で設定されているのに、コードを実行しても壊れない理由に戸惑っています。私は通常、コード ビハインドを使用するため、aspx のサーバー側コードについて、別の方法で処理され、runat=server コードのデバッグを妨げている何かがあるかどうか疑問に思っています。

そう。私の質問は次のとおりです。

1)サーバー側のコードがマークアップから分離されるように、コードビハインドファイルを使用したくないのはなぜですか?

2) サーバー側のロジックを中断できないのはなぜですか?

私の関連するコメントについても、あなたの洞察と意見を歓迎します。

4

6 に答える 6

9

を使用するインライン コード機能<% %>は、下位互換性のためだけではなく、.NET の機能であり、(比較的!) 明確で簡単なソリューションを可能にします。ただし、理想的とは言えない方法で使用されることがよくあります。同様に、コード ビハインドのコードは、Web コントロールと同様に、(通常は実際には) 理想的とは言えない方法で使用されることがよくあります。

コード ビハインドにコードを含めることは、通常、懸念事項を分離するのには役立ちませんが、従来の ASP とは異なる場所にスパゲッティ コードをごちゃまぜにすることになります。.NET を使用すると、非常によく整理されたソリューションを作成できますが、それを実現するのはユーザー次第です。コード ビハインド ページにコードを含めることは、そのジャーニーの最初のステップではなく、そのジャーニーを開始できる場所にすぎません。

イベントが発生しない理由については、おそらく次のようになります。

  • イベントは実際にはトリガーされていません。(実際にそのイベントをトリガーするために、ドロップダウン リストで選択した項目を変更していますか?)
  • 実際にはイベントが接続されていません。そのコントロールのプロパティ ウィンドウに、問題のイベントに対応するイベント関数名が表示されていますか? (これが最も簡単な方法です。たとえば、vb でhandlesキーワークを使用することもできます)
  • 多くの場合、イベントが発生しないのは、コードを開始していないか、URL が間違った場所を指しているなどの愚かなことをしているためです。
于 2010-01-20T00:16:05.680 に答える
2

1) 従来の ASP の開発に慣れていれば、簡単に移行できると思います。

2)あなたのマークアップを見なければ、あなたの問題が何であるかを伝えることはできません. そのブレークポイントに達していない場合は、いくつかの理由のいずれかが考えられます。

  1. デバッグが無効になっている可能性があります
  2. イベントは開催されていません
  3. マークアップには、メソッドがイベントのハンドラーとして存在することをコントロールに伝えるものは何もありません。
于 2010-01-20T00:14:29.300 に答える
2

ほとんどの MS の例で使用されている括弧は、通常、関数呼び出しまたはデータバインダーの参照用です。

たとえば<%# Databinder.Eval("MyColumn") %>、リピーターで使用されます。

接続文字列のような web.config 属性を参照するために使用されるタグもあります。 <%$ConnectionStrings:NorthwindConnection %>

于 2010-01-20T00:15:45.383 に答える
1

非常に多くの場合、「サンプル」ASP.NET コードはインライン コードと共に配布されます。その理由は、その方法で配布する方が簡単だからです。これは自己完結型で、コピーしてメモ帳に貼り付けるだけで、テスト サイトのフォルダーに .aspx として保存し、実行方法を確認できます。おそらく、本番環境でやりたいことではないでしょう。

より一般的な質問については... ASP.NET MVC は技術的にはまだ ASP.NET であり、コード ビハインド ファイルを使用しません。多くの開発者は、コード ビハインド ファイルがあるタイプの醜さを別のものと交換しただけだと感じています。個人的には、私はそれを両方の側面から見ることができますが、古典的な ASP で非常にひどいコードが多かった本当の理由は、タグのスープではなく、データベース接続を開くような「ビュー」コードで人々が非常識なことをしていたという事実だと思います。 . そのようなことをしない限り、いくつかのサーバー タグはまったく問題になりません。

実際、データ バインディングを行うと、マークアップに多数のEvalBindタグが混在することになります。そのため、コード ビハインドを備えた純粋な WebForms でさえ、常にきしむ音を立てるとは限りません。

于 2010-01-20T00:15:11.013 に答える
0

2)サーバー側のロジックを壊せないのはなぜですか?

デバッグを開始したときにビルドが失敗し、前のビルドを実行することを選択したことに気づかなかった可能性があります。そのビルドにブレークポイントが存在しなかった可能性があります。

于 2011-10-14T13:59:42.400 に答える
0

<%# DataBinder.Eval("Column") %>背後にあるコードから多くの余分なコードを節約することができます、そしてそれは私の意見ではそれほど悪い習慣ではありません。

于 2011-10-14T14:12:23.767 に答える