【问题标题】:ASP.NET master page and optional Jquery scriptASP.NET 母版页和可选的 Jquery 脚本
【发布时间】:2012-06-12 20:09:20
【问题描述】:

我正在使用母版页,并且在某些页面中引用了 JQuery,但不是所有页面。我正在添加一些使用客户端 JQuery 的用户控件,因此需要在使用它们的页面中包含对 jQuery 库的引用。

显然有很多方法可以实现这一点,但我想知道以下技术的相对优缺点的想法(或者是否确实存在更好的技术):

  1. 将脚本元素(通过创建具有相关属性的 HTMLgenericControl)添加到标题 controlCollection - cons -> 指向同一文件的多个脚本元素可以提供给客户端,如果页面和几个用户控件全部使用jquery。这真的是劣势吗?浏览器会尝试下载多个副本吗?

  2. 添加 masterPage 布尔属性 jQueryLib 并添加上面的脚本元素,前提是它尚未添加。缺点 - 在母版页的情况下,我无法在 ASP 中设置属性,因为我可以使用用户控件。因此,所有页面都需要更多的代码隐藏而不是简单的

  3. 如果 jQuery==='undefined',则使用一些相当简单的客户端 javascript 加载 jQuery 并在加载库后运行相关脚本。缺点 - 如果在一个页面上使用多个用户控件,则指向用于执行此操作的 javascript 实用程序函数的脚本标记仍将多次出现在标题中。然而,作为一个优势,这个文件比 jQuery 库小得多。

  4. 只需将脚本引用放在母版页中,即使只有以管理员身份登录的用户才需要任何 jquery 功能。

一如既往 - 非常感谢您的想法,并为我对所有 html 和 asp 的业余知识表示歉意。

【问题讨论】:

  • 如果用户是管理员,您是否考虑过只动态添加jquery?

标签: jquery asp.net


【解决方案1】:

您只能使用以下方式将 jQuery 添加到管理员的 MasterPage:

服务器端

protected bool administrator { get { return true; } }

Javascript

function pageLoad(sender, args) {
    var administrator = "<%= administrator %>".toLowerCase() == "true" ? true : false;

    if(administrator == true)
        loadJQuery();
}

function loadJQuery(){
    var scriptTag = document.createElement("script");
    var filePath = "jquery.js";

    scriptTag.onload = function( loadEvent ){
        // This function runs when jquery is loaded
    }

    scriptTag.type = "text/javascript";
    scriptTag.src = filePath;
    document.getElementsByTagName("head")[0].appendChild(scriptTag);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多