尽管在MVC中使用Bundling有点过度,但我认为这将是您最好的选择。它已经被完成并被验证,所以为什么花更多的时间来编写一些专有代码。
这就是说,如果你想要一个简单的样本,你可以做什么,那么你可以尝试以下。
public static class Util
{
private const string _scriptFolder = "Scripts";
public static string GetScripts(string expression)
{
var path = HttpRuntime.AppDomainAppPath;
var files = Directory.GetFiles(path + _scriptFolder).Select(x => Path.GetFileName(x)).ToList();
string script = string.Empty;
expression = expression.Replace(".", @"\.").Replace("{0}", "(\\d+\\.?)+");
Regex r = new Regex(@expression, RegexOptions.IgnoreCase);
foreach (var f in files)
{
Match m = r.Match(f);
while (m.Success)
{
script = m.Captures[0].ToString();
m = m.NextMatch();
}
}
return script;
}
}
这将返回您脚本导演中的最后一个匹配或它将返回空字符串。
使用此电话
@Html.Raw(MvcApplication1.Util.GetScripts("jquery-{0}.min.js"))
会得到你这样的结果,如果是1.8.2符合您的字符串的最后一个文件。
jquery-1.8.2.min.js
希望这会帮助你开始。
使用捆绑包,创建一个新的捆绑包中有一个文件(jQuery),就是这样。 – Aviatrix
@Aviatrix这看起来很实用,但我认为使用称为“捆绑和缩小”的功能没有任何实际的捆绑需求并且没有什么可以缩小。那么这是一个相当高的开销,不是吗? – thmshd
如果您使用它,它已经在那里。我怀疑这是内部缓存,所以开销应该接近于零。你总是有选择写你需要的工具:) – Aviatrix