我正在研究一个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“帮助”我缓存/刷新内容?
答案 0 :(得分:1)
确定。事实证明,为什么它不适合我,有两个原因。
默认启用的禁用缓存的kendo属性不在api中。像这样调用它修复了我的窗口问题。
content: {
url: targetUrlSiteSelect,
cache : true
}
我的附加脚本标记仍包含下划线元素。我后来发现这里的评论中包含的解决方案: jQuery version 1.5 - ajax - <script> tag timestamp problem
Blaise的评论:
$.ajaxPrefilter('script', function(options) { options.cache = true; });