2008-08-22 9 views
11

私はASP.NET(C# - この特定の質問は問題ではありませんが、完全に公開されています)について知りましたが、asp:-スタイルコントロールが私を救うのは大好きです面倒なHTML製作がたくさんありますが、私はしばしば特定の動作に不満を抱いています。私は最後の夜、マスターページで作業していました。私の<asp:BulletedList ID="nav">は、HTMLに変換されると<ul id="ct100_nav">になりました。コントロールと標準HTML

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

あなたの退屈な任務の一部を引き継ぐためにフレームワークに頼るときに受け入れる必要のある「構成上の慣例」があることはわかっていますが、これらの場合の「慣習」はそうではありません多くの確立された慣習ではなくむしろ不必要な追加事項です。私はなぜのIDが接頭辞を追加するのか知っていますが、私はこのようなものを微調整してもいいはずです。特に、Web標準のエバンジェリストのように、HTML IDを1ページに複製していません。

ここで私はASP.NETデベロッパーの方が私よりも味がいいです:あなたのアプリケーションの開発とデプロイの経験では、どのようにこれらのコントロールを活用していますか?ハードコードされたHTMLに頼っていますか?あなたはブレンドを使用していますか?これらのコントロールの中で私のHTMLを独特の癖の周りにデザインしたくはありませんが、可能であれば可能な限り活用したいと思います。

男の子は何ですか?

答えて

13

、それらをチェックアウトする

をお勧めします私は、標準のASP.NETコントロールは、社内スタッフの罰金だと思うだろう - 迅速かつ汚いが良いですそのシナリオでは、しかし、デザイナーでもあったWeb開発者と仕事をしていましたが、ASP.NETコントロールの使用を拒否し、HTMLでコード化し、必要なときにrunat = "server"タグを追加しました。これは、HTMLのレンダリング方法を正確に把握したかったためであり、とにかくASP.NETコントロールのいくつかは標準に準拠していないことがありました。

私は適切な場所にHTMLを使用し、そうでない場合はどこかに座っています。あなたは両方の世界の最高の並べ替えをすることができますCSS control Adapters

1

私もASP.NETに冒険していますし、同様の不満もあります。しかし、すぐにそれに慣れます。 という覚えが必要なのは、退屈なHTMLを作成していない理由は、ASP.NETコントロールがすべてあなたのために行うことだからです。

コントロールを継承し、そこからのHTML出力を微調整することを意味していても、これらのコントロールをある程度まで行うことができます。

私はこれまで、特定のコントロールがデフォルトでW3Cの検証に合格していない過去のことをしなければならなかったので、私は単にオーバーロードして編集しました。分)。

私は制御システムの仕組みについて学ぶといいでしょう。それから自分自身をいくつか一緒にノックすると、これは本当に私が何か問題を抱えている場合、アイデアをどこに行くか。

+0

"ASP.NETコントロールはあなたのためにすべてのことを行う" - はい、しかし*ひどく* – annakata

+0

私は多少それに同意しないだろう。私はツールではなくプログラマーを責めるプログラマーになろうとする。私はいくつかのASP.NETアプリケーションによって生成されたマークアップがどれほどきれいであるかについて人々にコメントを与えました。標準コントロールの多くは問題ありません。 ViewStateで多くのことを頼りにして、ViewStateが嫌いです。 :) –

2

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

アップデートがある場合、HTMLを "ハッキングする"のではなく、後で何らかの改良を加えると、すべてのコードはフレームワークを置き換えるだけで動作し、HTMLを変更する必要はありません。

希望ASP.NETで追加されたIDの接頭辞を使用すると、JSか何かを使用して、後でそれらにアクセスするための問題である場合、これはあなたが.ClientIDプロパティサーバー側を持っている...

0

に役立ちます。

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

私も追加詰め込むことすべてを好きではないので、私はMVCに移動しています....

2

@Brian、 うん!あなたはかなりのすべての動作を制御することができます..カスタムコントロール(3つのタイプがあります)を作成する検討を検討してください。私は最近、私の質問で彼らの概要を与えたhere

私は強くが、私には終わりを助けていない:)個人的に

0

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

1

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

あなたの箇条書きリストの場合、ListViewは素晴らしい中間地を提供します。それをデータソースにバインドすることはできますが、レンダリングされたHTMLをより厳密に制御することができます。デイブウォードはすでに、述べたように

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

0

:スコット区は、ここにリストビューに素敵なイントロを持っている「それはIDの衝突を防止するASP.NETの方法です。」

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

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

4

短い答えは、あなたがASPを使用しないでください:...あなたが本当に良い理由がない限り、標準のHTMLコントロールのバージョンです。

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

13

私は実際には、ここで私の意見に同意している意見を見るのがとても安心です。テンプレート言語としてのASP.NETは非常に貧弱です。

私はちょうどここ(上flamesuit!)作られたプロ・ポイントのカップルを反論したいと思います:

デイブ・ワードは、IDの衝突を言及 - これは本当ですが、私のひどい扱いか。私は、クライアントIDのようなASP.NET内部に延期する以外は、IDを効果的に無用にすることによって、xpathや深いCSSセレクタによって参照されるノードを参照することを好みました。

Rob Cooperさんは、コントロールがHTMLをどのように置き換えているかについて話していますので、それはすべてうまくいきます(言い換えれば、Robを許してください) - 既存のよく理解された言語を取り入れ、私たちの道を今のやり方で」、そして彼らの道は非常にが実装されていません。例えばasp:panelは、あるブラウザで表をレンダリングし、別のブラウザではdivをレンダリングします。ドキュメンテーションや実行がなければ、ログインコントロール(および他の多くのもの)のマークアップは予測できません。デザイナーにCSSを書くのはどうしたらいいですか?

プラットフォームがhtmlを変更した場合、コントロールによって抽象化のメリットが得られます。これは明らかに円形です(プラットフォームが変更されているため変更が必要です。その代わりに)実際に問題を作り出します。コントロールが再びアップデートで変更される場合、どのように私のCSSはそれに対処することになっていますか?

謝罪者は、「はい、あなたは設定でこれを変更することができます」、またはコントロールとカスタムコントロールの上書きについて話します。なぜ私はする必要がありますか?これらの問題のいくつかを修正することを目的としたCSSのフレンドリーなコントロールパッケージは、それには意味のないマークアップがあり、IDの問題に対処しません。

webformアプリケーションでMVC(抽象的な概念で3.5実装ではありません)を実装することは不可能です。なぜなら、これらのコントロールはビューとコントロールを緊密に結びつけるからです。伝統的なWebデザイナーのためのエントリーの障壁があります。なぜなら、以前はCSSとJSの別々のドメインであったものを実装するためにサーバーサイドコードに関わる必要があったからです。私はこれらの人々に共感します。

私は、コントロールによって特定のプロファイルのアプリケーションが非常に迅速に開発されるというKiwiの意見に強く同意します。何らかの理由でプログラマがHTMLを見つけられず、ASPの他の部分も利点があります。 NETは、これらのコントロールを必要とするあなたに与える、かもしれない価格の価値がある。

しかし、私は制御の損失を再送、(私は分離コードでのクラス、スタイルやスクリプトのようなものを扱うのモデルは後方wrongheadedステップであると感じ、と私は、さらにより良いモデルがテンプレートのためにそこにあることを感じてマイクロソフトの実装とこのプラットフォーム用のxslt)がありますが、これをコントロールに置き換えるのは簡単なことではありません。

ASP.NETは、LAMPとレールの関連技術から多くのことを学ぶことができると思っています。それまでは3.5 MVCで動作することを願っています。

(申し訳ありませんそれはそう長く< /暴言>た)

+0

私は今日、アップアップから外れていなかったと思う。 – NotMe

+0

私はあなたから悪い答えを見たことはないと思う。 –

0

あなたがレンダリングされたHTMLを超えるそれほど制御したい場合は、代わりにASP.NET MVCに見えます。