これらのコードサンプルの違いは何ですか?どのアプローチが正しいですか?バインドするかバインドしないか
<asp:Label ID="lblShorName" runat="server" Text="<%#Customer.ShorName%>" />
lblShorName.DataBind();
と
lblShorName.Text = Customer.ShorName;
これらのコードサンプルの違いは何ですか?どのアプローチが正しいですか?バインドするかバインドしないか
<asp:Label ID="lblShorName" runat="server" Text="<%#Customer.ShorName%>" />
lblShorName.DataBind();
と
lblShorName.Text = Customer.ShorName;
私が知っている違いはあまりありませんが(私が間違っていると私を修正する他の人の回答に興味がありますが)コーディングスタイルと好みの問題です。
個人的には、私は後者を好む。私はそれがよりクリーンで、マークアップをマークアップする機能からマークアップを分離していると感じています。しかし、それは私だけです。
(私は、私が必要と感じるところではデータバインディングを使用したくないという傾向もありますが、やはり、提供されているツールをどのように使いたいかの好みです。 MVCビュー私はループを作成し、そのループ内にHTMLを出力する可能性が高いですが、リピータやグリッドコントロールを使用してデータをバインドするよりも、ちょっと個人的な好みです)。
アプリケーション内でこれらの操作を実行する場所に移動します。前者の例はそれをページ上に残していますが、後者の例は条件付きでラップすることができ、別のメソッドに再因子付けすることができます。でない場合、常にはCustomer.ShortName
から来るでしょう。 d後者の例では、追加のロジックを追加しています。
また、2番目のものはコンパイル時にエラーが発生しますが、ページを訪問したとき(またはASP.NETのプリコンパイル時)には最初のエラーが発生します。 'Text'を' Description'にリネームしたときに発生します。 –
@Jakub Konecki:良い点。最近はコンパイル時のチェック(継続的な統合ビルドでは便利)と動的言語(Ruby、JavaScriptなど)の間に悩まされています。私はいつもコンパイル時のチェックを当然受けてきましたが、動的言語の賛同者は、あなたが与えた正確な例のために、それが非常に有用なステップだとは思っていますが、 – David
あまり本当に、あなたの値は、コードビハインドあなたがそれをのいずれかの段階を設定することができ、それを設定するただし場合は、データバインディングの時に設定されているデータバインディングを使用する場合ページのライフサイクル。
値の背後に何らかのロジックがあるかもしれません。これはコードビハインドで読みやすく/保守が容易です。
このアプローチは、ラベルを設定するときに異なります。 lblShorName.Text = Customer.ShorName;
さまざまなメソッド、イベント、タイマーで使用できます。最初に設定したい場合は、最初の設定を使用します。
コンパイルする必要がないため、実行時に本番サイトのサイトを変更する場合は、最初の方法が優れています。それがプリコンパイルされ、より読みやすく、ビューからモデルをカプセル化するので、2番目の方が優れています。さらに、後者は、ランタイムエラーの代わりにコンパイラエラーが表示されるため、エラーが起こりにくくなります。 –
@Tim - 完全に真実ではない - コンパイル時の(ASP.NETコンパイル時の)エラーを見つけるために、アプリケーションのプリコンパイルバージョンをデプロイしている場合は、プロダクションの最初のアプローチを更新できません。 –
@ジャカブ:私は詳細に行きたくないので、それは単なるコメントだった。私が言いたかったのは、私が最初に値を変更したい/変更するテスト環境でのみ、アプローチを使用するということです。しかし、それは私の主観的意見です。 –