有人问before,但没有人回复,所以我再次问我觉得这很重要。
只有在将验证控件添加到表单时,对Web表单的不显眼验证效果很好,但。对于缺少验证控件的其他页面,不会呈现对JQuery文件的引用。
我目前在所有页面上都使用JQuery,因此在Master页面文件中手动引用它,
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
问题在于,当我使用自己的JQuery逻辑和验证控件访问页面时,会创建两个引用(我自己的,再加上ASP.Net的ScriptResourceDefinition
)。
如何实现以下目标之一:
ScriptResourceDefinition
知道该文件是否存在且已添加?ScriptResourceDefinition
在每个页面上呈现JQuery,无论它是否检测到验证控件?答案 0 :(得分:2)
在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>