0

私は最近、.NET 開発と Umbraco の両方を担当する新しい役割を開始したため、どちらも初めてです。いつものように、開発を開始する前に、より生産的に作業できるようにするショートカットまたはヘルパー関数を探しています。以下に含まれていることがわかったヘルパー関数のセット:

public static string DatedContent(this UrlHelper urlHelper, string contentPath)
{
  var datedPath = new StringBuilder(contentPath);
  datedPath.AppendFormat("{0}m={1}",
      contentPath.IndexOf('?') >= 0 ? '&' : '?',
      getModifiedDate(contentPath));
      return urlHelper.Content(datedPath.ToString());
}

private static string getModifiedDate(string contentPath)
{
    return System.IO.File.GetLastWriteTime(HostingEnvironment.MapPath(contentPath)).ToString("yyyyMMddhhmmss");
}

上記の関数は次のように呼び出されます。

<script src="@Url.DatedContent("~/scripts/product.js")"></script>

これらの関数の目的は、JavaScript および CSS ファイルを自動的にバージョン管理して、ファイル参照の末尾に変更日付クエリ文字列を追加することにより、各 JavaScript および CSS ファイルの最新バージョンが確実に取得されるようにすることです。

ここでの私の問題は、これが初心者の質問であることをお詫びしますが、この関数を Umbraco 7 のどこに配置すればよいですか、またはこの機能は既にサポートされていますか?

これまでに学んだことから、すべてのコンテンツ ページには、作成日と変更日を含むいくつかの基本プロパティがありますが、CSS およびスクリプト ファイルにはこれらのプロパティがないため、インライン Razor コードを使用してこれらのオブジェクト プロパティを参照し、それらを ToString で要約することはできません。上記の機能を実行している方法。

私が最初に考えたのは、これらの関数は、かみそりコード ブロックが自動的に含まれるテンプレートの上部に含めることができるということでした。

どんな助けでも大歓迎です。

4

1 に答える 1

2

これはそのままではサポートされていません。「クライアント依存」フレームワークを使用する場合を除きます。これは、Asp.net フレームワークに似た一種の「バンドル」フレームワークです。

あなたがすることは完全に可能です。Umbraco はまだ .Net です。

サイトでこのコードを取得する 2 つの方法:

  • 新しいプロジェクトを作成し、DLL をビルドして、その DLL を umbraco Web サイトにドロップします。
  • コードを App_code に配置し、IIS にビルドさせます。

注:すべてのリクエストでmodifydateをチェックしています。忙しいウェブサイトをお持ちの場合は、これを最適化する必要があります. たとえば、@Html.CachedPartial(...) またはマクロを使用してパーシャルを使用します。

于 2014-04-09T15:22:56.977 に答える