【问题标题】:Load ScriptResourceDefinition JQuery on every page在每个页面上加载 ScriptResourceDefinition JQuery
【发布时间】:2014-09-11 15:29:34
【问题描述】:

已经问过before,但没有人回复,所以我觉得很重要,所以我再次问。

Web 表单的不显眼验证效果很好,但是,只有当验证控件被添加到表单时。对于缺少验证控件的其他页面,不会呈现对 JQuery 文件的引用。

我目前在所有页面上都使用 JQuery,所以在母版页文件中手动引用它,

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

问题是,当我使用自己的 JQuery 逻辑验证控件访问页面时,会创建两个引用(我自己的,加上 ASP.Net 的 ScriptResourceDefinition)。

我怎样才能达到以下目的之一:

  1. ScriptResourceDefinition 知道该文件存在且已添加?
  2. 强制ScriptResourceDefinition每个页面上呈现JQuery,不管它是否检测到验证控件?

【问题讨论】:

    标签: asp.net asp.net-4.5


    【解决方案1】:

    在这里找到答案https://stackoverflow.com/a/12628170/792888

    答案是从 ScriptManager 继承并停止 ASP.Net 的内置行为,即创建不必要的(重复的)JQuery 链接

    using System;
    using System.Linq;
    using System.Web.UI;
    
    namespace WebApplication46
    {
        public class CustomScriptManager : ScriptManager
        {
            protected override void OnInit(EventArgs e)
            {
                Page.PreRenderComplete += Page_PreRenderComplete;
                base.OnInit(e);
            }
    
            private void Page_PreRenderComplete(object sender, EventArgs e)
            {
                var jqueryReferences = Scripts.Where(s => s.Name.Equals("jquery", StringComparison.OrdinalIgnoreCase)).ToList();
                if (jqueryReferences.Count > 0)
                {
                    // Remove the jquery references as we're rendering it manually in the master page <head>
                    foreach (var reference in jqueryReferences)
                    {
                        Scripts.Remove(reference);
                    }
                }
            }
        }
    }
    

    在 web.config 中,这是为了替换标准的 ScriptManager:

    <system.web>
      <pages>
        <tagMapping>
          <add tagType="System.Web.UI.ScriptManager" mappedTagType="WebApplication46.CustomScriptManager" />
        </tagMapping>
      </pages>
    </system.web>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2016-06-10
      • 2013-07-19
      • 1970-01-01
      相关资源
      最近更新 更多