2009-10-26 14 views
0

我目前正试图找到一种很好的方式,只有当我需要它们时才加载我的JavaScript文件。为了做到这一点,我为faceboxlinks,datepickerfields,tinymcefields和其他需要外部js和初始化jquery表达式的脚本创建了几个HtmlHelpers。 在这些帮助程序中,我使用jQuery的getScript()执行脚本并使用其回调函数来初始化脚本。使用ViewData跟踪每页加载的脚本

现在我的问题来了。我最初的想法是跟踪这些脚本在字符串列表中,并将其放入htmlHelper.ViewData中。但不幸的是,这失败了。出于某种原因,这个viewdata不会传递给部分视图或类似的东西;它不保留列表..

是否有另一个地方,我可以全球保持我的字符串列表而不是帮助器的ViewDataDictionary,或者我用错误的方式使用此ViewData,我应该传递它因为某些原因? 任何澄清或帮助将不胜感激!

回答

0

您可以使用HttpContext.Current.Items集合来存储与当前请求相关的数据。尽管如此,我认为你应该重新设计你的架构,以便它不依赖于全局变量(ViewData和Items最终成为你的情况)。

看一看这个:How do I add JavaScript to an ASP.NET MVC View?以及类似的。

+0

谢谢! HttpContext.Current.Items的使用有窍门。目前,这解决了我的问题。在这种情况下依赖全局变量的缺点究竟是什么? 我并不十分热衷于在每个视图中定义和初始化我的脚本。 – Leon 2009-10-26 14:11:59

+0

当您使用全局变量时,您完全忽略了架构约束,因此理论上难以支持此类代码。您不必一次初始化所有脚本,您可以像现在这样根据需要执行它,但将初始化代码添加到容器中的相关占位符,然后将其添加到母版页中。这样,您的母版页就不必“知道”有关视图的任何内容。 – 2009-10-26 14:21:56

+0

我看到了,谢谢你清理:) – Leon 2009-10-26 14:45:23