2

私は最近、Web ページを作成するために HTML 文字列を作成する代わりに、ASP.Net で HTMLControls を作成する必要がある理由をプログラマーに説明しようとしていました。

それがより良い方法であることは知っていますが、「この方法の方が良い」以外に具体的な理由を示すことはできませんでした。

この質問に答えなければならないとしたら、あなたは何と答えますか。

なぜですか

Dim divA as New HtmlControls.HtmlGenericControl("div")
Dim ulList1 as New HtmlControls.HtmlGenericControl("ul")
Dim liObj1、liObj2、liObj3 を New HtmlControls.HtmlGenericControl("li") として
liObj1.innerText = "リスト項目 1"
liObj2.innerText = "リスト項目 2"
liObj3.innerText = "リスト項目 3"
ulList1.Controls.Add(liObj1)
ulList1.Controls.Add(liObj2)
ulList1.Controls.add(liObj3)
divA.Controls.add(ulList1)

"より良い:

Dim strHTML as String
strHTML = "<div><ul><li>List item 1</li><li>List item 2</li><li>List item 3</li></ul></div>"

? それは良く見えません。そのすべてのコードを見てください!そして、これはスペースを節約するために非常に単純化した例です。そのようなリストを実際に手動で作成することはないと思いますが、コレクションを反復処理するか、より高度な Web コントロールを使用することになりますが、要点を説明しようとしています。

4

7 に答える 7

2

大きな利点の 1 つは、HTML を文字列として記述すると、ヒューマン エラーが発生しやすく、すぐに読み取れなくなったり管理できなくなったりする可能性があることです。

生成された HTML は、人間からの保護が大幅に強化され、自己文書化されます。

(記録のために、私は両方の方法を軽蔑し、テンプレートには XSLT を使用します)

于 2008-12-10T17:23:11.157 に答える
2

私もしません。代わりに、私は:

  1. 目的の構成をカプセル化するカスタム コントロールを作成する
  2. または(非常に似ています)必要なプロパティを持つ単純なクラスを作成し、メソッドをオーバーライドし.ToString()て目的の HTML を作成します。

しかし、あなたの 2 つの選択肢のうち、前者の方が優れているいくつかの理由は次のとおりです。

  • ページ ライフ サイクルの後の時点で、html コントロールのプロパティを変更したり、他のコントロールをツリーに追加したりできます。
  • ASP.Net は、html のレンダリングを担当します。xhtml 準拠を破る可能性のある間違いがないことが保証されます。
于 2008-12-10T17:19:04.177 に答える
1

最新のWeb開発フレームワークが提供するテンプレートシステムをお勧めします。ASPで利用できるオプションはわかりませんが、いくつかあるはずです。テンプレートシステムを使用すると、質問で提供する2つの例のように、コードにマークアップを配置したり、詳細なドキュメント構築ブロックを記述したりすることを控えることができます。

開始する場所については、「asp.netテンプレートテンプレート」をグーグルで検索してみてください。asp.net用に次のようなページがあればいいのにと思います。見つかった場合はお知らせください。

http://wiki.python.org/moin/Templating

于 2008-12-10T17:57:41.870 に答える
0

個人的には、Microsoft の HTML の多くは quirks モードでしか機能しないため、必要な場合にのみコントロールを作成します。また、HTML 文字列の作成は非常にエラーが発生しやすいことに同意します。

XML パーサーで XHTML を作成し、XMLDocument オブジェクトから .toString を取得します。詳細ですが、出力は常に適切にフォーマットされ、常に機能します。

于 2008-12-11T01:01:21.937 に答える
0

次の 2 つの場合にのみ、非常に優れています。

  1. コード内のこれらのコントロールで何かをする必要があります
  2. 結果として得られる手動の HTML は非常に混乱しているため、文字列として維持することは実際的ではありません。

コードの観点からは、どちらも優れたソリューションではありません。表示に関する限り、どちらも完全に正常に動作します。

于 2008-12-10T17:13:16.030 に答える
0

利点は、ASP.NET によって生成されたコードがさまざまな条件で異なる方法でレンダリングされることです。ブラウザーのバージョン、ソフトウェアの更新/パッチ、トレンド、追加のフレームワークなど。自分で HTML を記述して画面に表示しただけでは、それは変わりません。それは常にあなたが書いたものになります。

ただし、.NET オブジェクトを使用して追加する場合 (推奨される方法)、エンド ユーザーのブラウザーでレンダリングされる実際のコードは実行時に作成されます。これは、.NET コントロールのレンダリング方法を変更する「ASP.NET 2.0 用の CSS コントロール アダプター ツールキット」を使用しており、純粋な CSS を使用するようにコントロールをレンダリングするデフォルトの方法を変更している良い例です。

于 2008-12-24T03:37:29.740 に答える
-1

あなたが持っているようなコントロールを構築することは、ASP.NET に関する唯一の最悪なことです。パーシャルを使用した MVC またはアプローチは、HTML を構築するためのはるかに優れた (より簡単に保守できる) 方法です。

于 2010-08-02T05:53:30.540 に答える