3

仕事では主に ASP.NET 環境を使用しています。現在、「モジュール」を使用するアプリケーションを構築しています。これは単なる UserControl であり、その Javascript がコントロールにあり、そのコントロールのスタイルシートへのリンク要素があります。モジュールを維持したいので、このコントロールのスタイルをマークアップ/JavaScript から独立させたいと考えています。

それで、これを行うための好ましい方法は何ですか?明らかに、求めている「テーマ」機能が必要ない場合は、コントロールの上部でスタイル タグを使用できます。私が言ったように、今私はリンク要素を持っていますが、これは適切ではないと思います。

誰かが好ましい方法を持っていますか? もしそうなら、何とその理由は?


ASP.NET テーマについて簡単に説明しましたが、これらのコントロールの考え方は少し異なると思います。

基本的にショッピングカートシステムです。全部には入りたくありませんが、私たちは非常にきちんとしたセキュリティ システムを使用しており、事前に作成されたショッピング カートは使用したくありません。たとえば、SiteFinity (使用する CMS システム) やその他のプロジェクトで、ページにドロップできる一連のコントロールを開発しています。通常、これらを DLL にコンパイルして、ツールボックスからドラッグ アンド ドロップできる実際のコントロールを取得します。次に、内部の「ジェネリック」スタイリングを使用して、誰かが必要とする追加のスタイリングを許可し、いくつかの洗練されたスタイルを提供します。良い。

これは私がこれをやったのが初めてで、私たちの店の誰かがこれをやったのは本当に初めてなので、私は行くにつれてそれを理解しています. 私はかなり基地から外れているかもしれませんが、うまくいけばそうではありません。


そうです、これのアイデアは、実際には単なる CSS ファイルと jQuery テンプレートである「テーマ」を持つことです。私はそれらに同じ名前を付け、それを設定するためにユーザーコントロールにテーマプロパティを持っています。

これらのコントロールが完成したら、javascript をコード ビハインドの RegisterScriptBlock にリファクタリングするかもしれませんが、今のところはコントロール自体のスクリプト タグだけです。

この質問を促したのは IE の DebugBar で、リンク要素は div 内では許可されていないという警告が表示されました。あまり気にしませんが、考えてみると、それを行わずにcssファイルにリンクする方法がわかりませんでした。マスターに「空の」リンクタグを付けてから、UserControl の Page_Load のコードビハインドでそれを設定することを非常に簡単に検討しましたが、それはお尻のようです。

@import を使用することもできると思いますが、リンク タグの方が好ましいと思いますよね?

4

4 に答える 4

2

独自のテーマ エンジンを展開しているように聞こえますが、ASP.NET テーマを使用してみませんか?

自分でやろうと決心している場合は、CssFriendly プロジェクトのコードを参考にしてください。(コードのソースを引用する限り、コードを投稿しても問題ないと思います。) .css ファイルは埋め込みリソースとしてフラグが付けられ、以下のコードは必要に応じてそれらを含めるために使用されます。

string filePath = page.ClientScript.GetWebResourceUrl(type, css);

// if filePath is not empty, embedded CSS exists -- register it
if (!String.IsNullOrEmpty(filePath))
{
    if (!Helpers.HeadContainsLinkHref(page, filePath))
    {
        HtmlLink link = new HtmlLink();
        link.Href = page.ResolveUrl(filePath);
        link.Attributes["type"] = "text/css";
        link.Attributes["rel"] = "stylesheet";
        page.Header.Controls.Add(link);
    }
}
于 2008-10-26T04:01:59.137 に答える
2

あなたがすべきことは、Page.RegisterScriptBlock を使用してスクリプト ブロックを登録することだと思います。スクリプト ブロック内の ascx でそれらをインラインにしないでください。これは常に可能であるとは限りませんが、理論的にはこれが最善の方法です。

理想的には、スタイルもマークアップから分離する必要があります。コントロールはクラスと ID を持つことができますが、スタイルはコントロールではなくアプリケーションに基づいています。コントロールは、理論的には、別のスタイルが必要な他のアプリケーションで使用できます。

于 2008-10-24T20:10:43.323 に答える
1

アプリの大きさと、他の場所のテーマに依存しているかどうかによって異なります。

.skin ファイルを使用している場合、またはアプリの大部分がテーマにもプラグインされている場合は、テーマを使用することもできます。

ただし、必要なスタイルがほんのわずかである場合は、スタイルシートを手動で設定し、css ファイルを外部に保持することをお勧めします (インライン スタイルは PITA であり、css の主要な目的の 1 つを無効にします)。

いずれの場合も、コントロールに CssClass 属性を設定することを忘れないでください。

于 2008-10-24T20:09:30.097 に答える
1

適切にするには、import.css ファイルを用意します。クラスの命名を構成してコントロールに従い、ドキュメントのヘッダー内にスタイルをインポートします。

「30DayPricingCalc」というモジュールがある場合、クラス/ID に名前を付けることができます。

30DayPricingCalc.css

.30daypricingcalc_main_content
{
  ...
}

また、まだお持ちでない場合は、スペースを節約するために一般的な再利用可能なスタイルのリストをセットアップします。要素はオブジェクトごとに複数のクラスを許可するためです。

また、リンク タグは、以前よりも重要性が大幅に低下しています。IE5 世代のブラウザは既にサポートされており、IE6 は @import タグをサポートしています。

乾杯!

于 2008-10-27T16:11:29.677 に答える