thm*_*shd 1 asp.net asp.net-mvc razor asp.net-mvc-4
在 ASP.NET MVC 4 项目中,我想引用这样的版本化脚本文件:
// Just some pseudo-code:
<script src="@Latest("~/Scripts/jquery-{0}.min.js")"></script>
// Resolves to the currently referenced script file
<script src="/Scripts/jquery-1.10.2.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
这样当通过 NuGet 更新新的脚本版本时,引用会自动更新。我知道捆绑和缩小功能,但它只是太多了。我只想要解决通配符的小部分。我的文件已经缩小了,而且我也不想要这些包。
你有一些聪明的想法如何解决这个问题吗?
小智 5
尽管在 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;
}
}
Run Code Online (Sandbox Code Playgroud)
这将返回您的脚本主管中的最后一个匹配项,或者它将返回空字符串。
使用这个调用
@Html.Raw(MvcApplication1.Util.GetScripts("jquery-{0}.min.js"))
Run Code Online (Sandbox Code Playgroud)
如果 1.8.2 是与您的字符串匹配的最后一个文件,则会为您提供此结果。
jquery-1.8.2.min.js
Run Code Online (Sandbox Code Playgroud)
希望这能帮助您入门。
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |