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 压缩它们我正在执行上述功能的方法。

我的第一个想法是这些函数可以包含在自动包含剃刀代码块的模板顶部,但由于我是.Net 新手,我不知道这是否是标准约定。

任何帮助将不胜感激。

4

1 回答 1

2

开箱即用不支持此功能。除非您使用“客户端依赖”框架。这是一种“bundels”框架,类似于 Asp.net 框架。

你所做的完全有可能。Umbraco 仍然是 .Net。

在您的站点中获取此代码的 2 种方法:

  • 创建一个新项目,构建一个 DLL 并将 DLL 放入您的 umbraco 网站
  • 将您的代码放入 App_code 并让 IIS 构建它。

注意:您正在检查每个请求的修改日期。如果您有一个繁忙的网站,您将需要对其进行优化。例如,使用 @Html.CachedPartial(...) 或使用宏使用部分

于 2014-04-09T15:22:56.977 回答