【问题标题】:Keeping track of loaded scripts per page using ViewData使用 ViewData 跟踪每页加载的脚本
【发布时间】:2009-10-26 10:53:51
【问题描述】:

我目前正在尝试找到一种仅在需要时才加载我的 javascript 文件的好方法。为了做到这一点,我为 faceboxlinks、datepickerfields、tinymcefields 和其他需要外部 js 和初始化 jquery 表达式的脚本创建了几个 HtmlHelper。 在这些帮助程序中,我使用 jQuery 的 getScript() 执行脚本并使用它的回调函数来初始化脚本。

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

是否有其他地方可以全局保存我的字符串列表而不是助手的 ViewDataDictionary,或者我是否以错误的方式使用了这个 ViewData,我应该出于某种原因将其传递出去? 任何澄清或帮助将不胜感激!

【问题讨论】:

    标签: c# javascript asp.net-mvc viewdata


    【解决方案1】:

    您可以使用 HttpContext.Current.Items 集合来存储与当前请求相关的数据。

    不过,我认为您应该重新设计架构,使其不依赖于全局变量(ViewData 和 Items 最终属于您的情况)。

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

    【讨论】:

    • 谢谢! HttpContext.Current.Items 的使用起到了作用。目前,这解决了我的问题。在这种情况下依赖全局变量到底有什么缺点?我不太热衷于必须在我使用的每个视图中定义和初始化我的脚本..
    • 当你使用全局变量时,你完全跳过了架构约束,所以理论上支持这样的代码更难。您不必一次初始化所有脚本,您可以像现在一样按需进行,但将初始化代码添加到容器中的相关占位符,然后将其添加到母版页。这样,您的母版页就不必“了解”有关视图的任何信息。
    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2015-05-16
    • 2016-04-04
    相关资源
    最近更新 更多