如何摆脱强有力的添加下划线与时间戳

时间:2015-01-15 17:38:43

标签: ajax asp.net-mvc

我正在研究一个MVC5项目并遇到一个MVC问题试图“帮助”我,我想。我正在做的是尝试通过提取他们的javascript来整理视图,而不是摆弄捆绑配置。

使用bundle文件夹中的泛型加载可能是一个选项,但我宁愿避免这种情况。

所以这是我的代码,它正在运行:

    public static string GetControllerName(this ControllerBase controller)
    {
        var name = controller.GetType().Name;
        if (name.ToLower().EndsWith("controller"))
            return name.Substring(0, name.Length - 10);
        return name;
    }

    public static IHtmlString LoadViewScripts(this HtmlHelper helper)
    {
        var view = helper.ViewContext.View as RazorView;
        if (view != null && !string.IsNullOrEmpty(view.ViewPath))
        {
            var controllerName = helper.ViewContext.Controller.GetControllerName();
            var vPath = string.Format("~/Scripts/View/{0}/{1}.js", controllerName, Path.GetFileName(view.ViewPath));

            var realPath = helper.ViewContext.HttpContext.Server.MapPath(vPath);
            if (File.Exists(realPath))
            {
                var urlPath = UrlHelper.GenerateContentUrl(vPath, helper.ViewContext.HttpContext);
                var lwrite = File.GetLastWriteTime(realPath);

                return new HtmlString(string.Format("<script type='text/javascript' language='javascript' src='{0}?v={1}'></script>", urlPath, lwrite.Ticks));
            }
        }

        return new HtmlString(string.Empty);
    }

结果我传递给src属性:

http://localhost/AppName/Scripts/View/Map/SelectSite.cshtml.js?v=635569414679160391

我得到了什么(firefox的网络视图):

http://localhost/AppName/Scripts/View/Map/SelectSite.cshtml.js?v=635569414679160391&_=1421342715176

我期待什么(firefox的网络视图):

http://localhost/AppName/Scripts/View/Map/SelectSite.cshtml.js?v=635569414679160391

在这种特殊情况下,有谁知道如何阻止MVC“帮助”我缓存/刷新内容?

1 个答案:

答案 0 :(得分:1)

确定。事实证明,为什么它不适合我,有两个原因。

  1. 默认启用的禁用缓存的kendo属性不在api中。像这样调用它修复了我的窗口问题。

    content: {
     url: targetUrlSiteSelect,
     cache : true
    }
    
  2. 我的附加脚本标记仍包含下划线元素。我后来发现这里的评论中包含的解决方案: jQuery version 1.5 - ajax - <script> tag timestamp problem

  3. Blaise的评论:

    $.ajaxPrefilter('script', function(options) { options.cache = true; });