7

js ファイルのバージョン管理に役立つコードを少し書きました。基本的に、現在のスクリプト マネージャーを中心に回転し、javascript ファイル パスにファイルの md5 ハッシュを追加します。そう

<script src="../Javascript/Navigation.js" type="text/javascript"></script>

になる

<script src="../Javascript/Navigation.js?md5=70D2B4D1F236C7E340D9152B9E4102C3" type="text/javascript"></script>

これはかなり一般的なことだと思います(またはその変形)。私が苦労しているのは、app_themes フォルダー内の css ファイルを取得して同じことを行うことです。

css リンクにアクセスして変更するにはどうすればよいですか?

4

3 に答える 3

8

次のように、コントロール アダプターを使用して、この動作をページに適切に挿入できます。

public class PageAdapter : System.Web.UI.Adapters.PageAdapter
{
    protected override void OnPreRender(System.EventArgs e)
    {
        foreach (var link in Page.Header.Controls.OfType<HtmlLink>().ToList())
            if (link.Attributes["type"].Equals("text/css", StringComparison.OrdinalIgnoreCase))
                if (link.Attributes["href"].Contains("/App_Themes/{0}/".Fill(Page.Theme), StringComparison.OrdinalIgnoreCase))
                   /* process link */

        base.OnPreRender(e);
    }
}

以下を*.browserファイルとしてApp_Browsersフォルダーに保存することでプラグインできます。

<browsers>
  <browser refID="Default">
    <controlAdapters>
      <adapter controlType="System.Web.UI.Page"
               adapterType="PageAdapter" />
    </controlAdapters>
  </browser>
</browsers>

全体として、コントロール アダプターは、コントロール/ページのライフサイクルに動作を挿入するための強力な AOP のようなメカニズムだと思います。従来のサブクラス化を支持して、それらはほとんど完全に無視されます。

于 2010-01-07T15:12:11.733 に答える
1

代わりにCombresを使用して、ホイールを 2 回発明することを避けます。あなたが求めるすべてを行います。

于 2010-01-07T11:21:06.210 に答える