2014-04-09 29 views
0

由于最近开始了一个新角色,我将与.NET开发人员和Umbraco一起工作,因为我将与这两个人员密切合作。像往常一样,在开始开发之前,我正在寻找一些快捷方式或帮助功能,这将使我能够更高效地工作。辅助函数一组,我发现我已经包含如下:在Umbraco中自动版本化CSS和Javascript文件7

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的新手,我不知道这是否是标准约定。

任何帮助将不胜感激。

回答

2

这不支持开箱即用。除非您使用“客户关系”框架。这是一种类似于Asp.net框架的“bundels”框架。

你做什么是完全可能的。 Umbraco仍然是.Net。

2种方式在您的网站得到这个代码:

  • 做一个新项目,建立一个DLL,并在您的一把umbraco网站删除DLL
  • 将代码放在App_Code文件,让IIS构建它。

注意:您正在检查每个请求的modifydate。如果你有一个繁忙的网站,你会想优化这个。例如。使用部分使用@ Html.CachedPartial(...)或使用宏

相关问题