如何在HTML帮助扩展方法中获取当前调用者视图页面文件?

时间:2011-01-22 17:24:54

标签: asp.net-mvc extension-methods html-helper

我创建了HTML帮助扩展,将脚本合并到一个文件中,如下面的代码所示。它将jQuery和jQuery UI文件合并到指定位置的common.js文件中。我使用具有文件依赖性的ASP.NET缓存来监视所有组合文件。如果某个文件被更改,该方法将重新生成组合文件。

@(Html.CombinedFiles
(
    "~/Scripts/common.js",
    "~/Scripts/jquery-1.4.4.js",
    "~/Scripts/jquery-ui.js"
))

一切都很完美。但是,它只有一个问题。当开发人员修改调用此函数的视图页面以添加或删除要组合的文件时。 ASP.NET缓存仍然有效。方法不会重新生成组合文件,因为我没有将调用者视图页面添加到文件依赖列表。

我想知道。是否可以获取查看页面来调用此扩展方法?它必须支持ASPX和Razor视图引擎。

谢谢,

PS。 Documentation关于此功能的Higgs RIA framework,以便更好地理解此方法。

1 个答案:

答案 0 :(得分:4)

IView view = htmlHelper.ViewContext.View;
if (view is BuildManagerCompiledView)
{
    string viewUrl = ((BuildManagerCompiledView)view).ViewPath;
    // use viewUrl here    
}