12

私は ASP.NET に取り掛かっています (C# - この特定の質問には関係ないことはわかっていますが、完全な開示とそのすべてです) asp:。-style コントロールのおかげで面倒な HTML 作成の手間が省けるのが気に入っていますが、私はしばしば特定の行動に不満を感じます。昨夜、マスター ページを操作しているときに 1 つ遭遇し<asp:BulletedList ID="nav">ました。HTML に変換すると、 my が になりまし<ul id="ct100_nav">た。

他にも問題があります.DataGridを自動入力すると、結果のテーブルに必ずしも必要ではない属性が追加されることに気付きました。

面倒な作業の一部をフレームワークに依存する場合に受け入れなければならない「構成よりも規則」がある程度あることは知っていますが、これらの場合の「規則」は確立された規則ではありません。 、むしろ不必要なエキストラ。ID がプレフィックスを追加する理由はわかっていますが、特に Web 標準のエバンジェリストとして、HTML ID を 1 つのページに複製しないので、このようなことを微調整してオフにすることができるはずです。

ここでの質問は、私より経験豊富な ASP.NET 開発者向けです。アプリの開発と展開の経験において、これらのコントロールをどのように活用していますか? ハードコーディングされた HTML に頼っていますか? ブレンドを使用していますか?これらのコントロールの特異な癖を中心に HTML を設計したくはありませんが、可能であればそれらを活用したいと考えています。

男の子はどうする?

4

11 に答える 11

13

個人的には、

標準の ASP.NET コントロールは、社内のものには適していると思います。そのシナリオでは、クイック アンド ダーティが適しています。しかし、デザイナーでもある Web 開発者と一緒に仕事をしたことがあり、彼は ASP.NET コントロールの使用を拒否し、HTML でのコードのみを使用し、必要に応じて runat="server" タグを追加しました。これは、彼が自分の HTML がどのようにレンダリングされるかを正確に知りたかったためであり、とにかく当時、ASP.NET コントロールの一部は標準に準拠してレンダリングされませんでした。

私は中間のどこかに座っています - 適切な場合は HTML を使用し、そうでない場合は使用しません。CSS コントロール アダプターを使用して、両方の長所を並べ替えることができます。

于 2008-08-22T11:34:27.003 に答える
13

テンプレート言語としての ASP.NET は非常に貧弱です。

ここで述べたいくつかのプロポイントに反論したいと思います(フレームスーツを着てください!):

Dave Ward は ID の衝突について言及しています - これは本当ですが、私の扱い方はひどいものでした。clientID のような ASP.NET の内部構造に従うことを除いて、ID を効果的に役に立たなくするよりも、xpath またはディープ css セレクターによって参照されるノードを確認することをお勧めします。

Rob Cooper は、コントロールが HTML の代わりになる方法について話しているので、それで問題ありません (言い換えると、Rob を許してください)。今」、そして彼らの方法は非常に不十分に実装されています. たとえば、asp:panel は、あるブラウザーでは表をレンダリングし、別のブラウザーでは div をレンダリングします! ドキュメントや実行がなければ、ログイン コントロール (およびその他の多く) のマークアップは予測できません。それに対してデザイナーにCSSを書いてもらうにはどうすればいいですか?

Espo は、プラットフォームが html を変更した場合、コントロールが抽象化の利点をどのように提供するかについて書いています。実際に問題を引き起こします。コントロールが更新によって再び変更される場合、CSS はどのように対処すればよいのでしょうか?

弁明者は「はい、でもこれは構成で変更できます」と言うか、コントロールやカスタム コントロールのオーバーライドについて話します。なぜ私はしなければならないのですか?これらの問題のいくつかを修正することを目的とした css フレンドリー コントロール パッケージは、意味のないマークアップを使用しており、ID の問題に対処していません。

これらのコントロールはビューとコントロールを非常に緊密にバインドするため、MVC (3.5 実装ではなく抽象的な概念) を Web フォーム アプリですぐに実装することは不可能です。以前は CSS と JS の別々のドメインであったものを実装するために、サーバー側のコードに関与する必要があるため、従来の Web デザイナーにとって参入障壁が存在します。私はこれらの人々に同情します。

コントロールを使用すると、特定のプロファイルのアプリを非常に迅速に開発できるという Kiwi の指摘に、私は強く同意します。また、何らかの理由で一部のプログラマーが HTML を不快に感じていること、さらに ASP.NET の他の部分が提供する利点があることを認めます。これらの制御が必要な場合、価格に見合う価値があるかもしれません。

しかし、はコントロールの喪失に憤慨しており、コードビハインドでのクラス、スタイル、スクリプトなどを扱うモデルは、間違った一歩後退であると感じています。さらに、テンプレート化のためのより良いモデルがあると感じています (このプラットフォーム) ですが、コントロールをこれらに置き換えることは自明ではありません。

ASP.NET は、LAMP や Rails の世界の関連技術から多くを学ぶことができると思います。それまでは、できる限り 3.5 MVC で作業したいと考えています。

(長くなってすみません</rant>)

于 2008-12-19T09:17:30.357 に答える
4

簡単に言うと、本当に正当な理由がない限り、標準のHTMLコントロールのasp:...バージョンを使用しないでください。

ジュニア開発者は、ほとんどのASP.NETブックでカバーされているため、これらのコントロールの使用に夢中になっていることがよくあります。そのため、これらのコントロールはより優れている必要があると考えられます。彼らはそうではありません。この時点で、毎日8年間ASP.NETを開発した後、aspを使用することが実際に理にかなっている2つか3つのケースしか考えられません。...標準のHTMLコントロールに対するINPUTコントロール。

于 2008-12-19T08:32:45.157 に答える
2

サーバー コントロール上の ID について: ClientID にアクセスすることで、実際にブラウザーに書き込まれる ID を見つけることができます。そうすれば、サーバー側とクライアント側のスクリプトを組み合わせることができ、_id="ct100_nav"_ をハードコードする必要はありません。

HTML を「ハッキング」する代わりに、含まれているコントロールを使用するように常に心がけています。これは、後で更新や改善があった場合でも、フレームワークを置き換えるだけですべてのコードが機能し、HTML を変更する必要がないためです。

お役に立てれば

于 2008-08-22T11:25:18.413 に答える
2

@ブライアン、うん!すべての動作をほぼ制御できます。カスタム コントロールの作成を検討してください (3 つのタイプがあります)。最近、こちらの質問でそれらの概要を説明しました。

私はそれらをチェックアウトすることを強くお勧めします、私には終わりがありません:)

于 2008-08-22T11:33:30.360 に答える
1

私も ASP.NET への冒険を続けており、同様のフラストレーションもありました。ただし、すぐに慣れます。覚えておく必要があるのは、退屈な HTML の作成が必要ない理由は、ASP.NET コントロールがすべてを自動的に実行してくれるからです

コントロールを継承し、そこから HTML 出力を微調整することを意味する場合でも、これらのことをある程度制御/微調整できます。

私は過去にそれをしなければなりませんでした。特定のコントロールは、あちこちに追加のマークアップを配置することで、デフォルトで W3C 検証に合格しなかったため、必要に応じてオーバーライドして編集しました (修正には文字通り数分かかりました)。

制御システムがどのように機能するかを学んでください..そして、自分でいくつかをノックしてください.これは、ボンネットの下で何が起こっているのかを理解するのに本当に役立ちました.

于 2008-08-22T11:22:55.330 に答える
1

HTML は、ASP.NET の ID 衝突を防止する方法であるため、これらの種類の ID でレンダリングされます。マスター ページやウィザード コントロールなどの各コンテナー コントロールは、その子の ID に "ID_" を付加します。

箇条書きリストの場合、ListView は適切な中間点を提供します。データソースにバインドすることはできますが、レンダリングされた HTML をより厳密に制御できます。Scott Gu による ListView の紹介がここにあります。

http://weblogs.asp.net/scottgu/archive/2007/08/10/the-asp-listview-control-part-1-building-a-product-listing-page-with-clean-css-ui. aspx

于 2008-08-22T12:40:18.513 に答える
0

レンダリングされた HTML をそれほど細かく制御したい場合は、代わりにASP.NET MVCを調べてください。

于 2009-07-24T20:22:58.923 に答える
0

Dave Ward が既に述べたように、「これは ID の衝突を防ぐための ASP.NET の方法です」。

これの非常に良い例は、カスタム コントロール内にコントロールを配置しようとしている場合で、そのカスタム コントロールをリピーターで使用して、カスタム コントロールの HTML がページに対して複数回出力されるようにします。

他の人が述べたように、javascript のコントロールにアクセスする必要がある場合は、ClientScriptManager にアクセスできる ClientScript プロパティを使用し、この方法でスクリプトをページに登録します。コントロールの ID を入力するだけでなく、参照しようとしているコントロールの ClientID プロパティを使用するスクリプトを作成するようにしてください。

于 2008-12-19T08:23:17.797 に答える
0

ASP.NET によって追加された ID のプレフィックスが、後で JS などを使用してアクセスする際に問題になる場合は、サーバー側に .ClientID プロパティがあります。

ASP.NET によってオーバーヘッドが追加される場合は、発行された html を完全に制御できる ASP.NET MVC (まだプレビュー) を検討する必要があります。

私は MVC に移行しています。

于 2008-08-22T11:30:28.477 に答える
0

ここでの回答のほとんどは、デザイナーの視点に基づいていると思います。小規模から中規模のプロジェクトでは、コードと CSS/HTML を同期し、標準に準拠してクリーンにするのはオーバーヘッドのように思えるかもしれません。これを行うデザイナーの方法は、レンダリングされた HTML を完全に制御することです。しかし、ASP.NET でその完全な制御を行う方法はたくさんあります。そして私にとって、必要な HTML を aspx/ascx ファイルに含めることは、最もスケーラブルでなく汚い方法です。CSS を使用してコントロールのスタイルを設定する場合は、CssClass プロパティを使用していつでもサーバー側のクラスを設定できます。JS を介してそれらにアクセスする場合は、サーバー側で適切な ID を使用して JS を再度発行できます。これが提供する唯一の欠点は、開発者とデザイナーが密接に協力しなければならないことです。とにかく大規模なプロジェクトでは、これは避けられません。しかし、ASPの利点。NET が提供するものは、これらの問題をはるかに上回ります。それでも、標準に準拠した HTML、スキニングのサポート、およびレンダリングされたマークアップを制御するためのその他の機能が必要な場合は、いつでもサードパーティ コントロールを使用できます。

于 2008-08-22T12:31:18.863 に答える