0

Codegen ツールを使用して、TheThemeMachine から継承された新しいテーマ (MyTheme) を作成しました。MyTheme の Layout.cshtml に、いくつかの CSS ファイルをグローバル CSS (Style.Include(...)) として含めました。次に、レジスタ フォームをレンダリングするために、Register という名前のシェイプを作成しました。(MyArea)/Views/Register.cshtml ファイルで、Style.Include("register.css") を使用して register.css ファイルを含めました。しかし、Register シェイプを Chrome でレンダリングすると、register.css ファイルが、Layout.cshtml に含めた css ファイルの前に配置されていることがわかりました。そのため、登録フォームに必要なものが表示されませんでした。私の意見では、 register.css は Content in Layout に含まれていたため、 Layout.cshtml に含めたグローバル css ファイルの後に配置する必要があります。しかし、本当のことはそうではありませんでした!その理由と私がすべきことを説明してもらえますか? ありがとう !

4

1 に答える 1

0

私が理解している限り、次の設定があります。

  • テーマの global.css
  • モジュールの register.css

前者は後者に依存するため、global.css の後に register.css が必要です。

これを一緒にハックすることはできますが、本当の問題は依存関係の連鎖にあります。テーマはスタイリングに関して最も優先度が高いため、スタイルシートとスクリプトは最後にインクルードされ (リソース マニフェストで明示的な依存関係が定義されていない場合)、それらの形状のオーバーライドはモジュールのオーバーライドよりも優先されます。この背後にある考え方は、テーマから何でもオーバーライドできるようにすることです。

つまり、register.css は global.css に依存すべきではありません。モジュールは、必要なものをすべて含めたり要求したりする必要があるスタンドアロンのサブアプリケーションです。モジュールにそのようなスタイルを含めたくない場合は、register.css をテーマに含めます (global.css など)。

于 2013-05-29T15:19:29.340 に答える