使用: C#MVC5和Jquery
我有一个可能使用多个不同过滤器的过滤器屏幕。根据用户选择的内容,我调用服务器,然后将部分视图加载到bootstrap模式中,如下所示:
$.ajax({
url: filterUrl,
contentType: 'application/html',
success: function (filterContent) {
$("#divReportFilterModalBody").html(filterContent);
LoadFilterScript(SCOPESTRINGS[currentReport.Scope]);
},....
下一步是为该过滤器页面加载必要的javascript,因为您无法在局部视图上使用脚本。为此,我还从服务器请求脚本如下:
$.getScript(scopeString + "FilterJavaScript",
function () {
mvc控制器:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult ScopeFilterJavaScript()
{
return
File(System.IO.File.ReadAllBytes(Server.MapPath("~/Scripts/.../filterPartial.js")), "text/javascript");
}
因为用户一次只能使用一个过滤器,可能会也可能不会使用多个过滤器,我的问题是:
在这种情况下,最佳做法是什么?
由于
编辑:我一直在研究这个话题,发现这篇文章(旧的,但在我看来仍然非常相关)。 enter link description here
答案 0 :(得分:0)
如果你真的需要它,只加载东西总是一个好主意。当文件不是很大时,也许你可以将它们组合起来并将它们包括在内。
或者我应该缓存脚本并找出一种不再加载它的方法吗?
烨。
当您加载脚本(没有任何查询)时,浏览器会缓存它。但这与再次加载脚本时发生的情况无关。服务器“再次”提供它或者浏览器使用缓存的服务器。然而,脚本然后再次执行。即使你从dom中删除它 - 一旦加载的脚本就在那里。
也许你可以像这样包装你的脚本:
run:
Successfully recorded login timestamp
[]
[[Ljava.lang.Object;@35fa3ff2]
[[Ljava.lang.Object;@407c448d, [Ljava.lang.Object;@1e78a60e]
然后您可以根据需要多次加载脚本 - 它只会“执行”一次。