Если вы хотите отказаться от использования ScriptManager, но при этом сохраняете возможность хранить библиотеки в вашей DLL, попробуйте следующее:
- Создайте пользовательский элемент управления в сборке, где находится ваша библиотека javascriptпостоянно.
- Использовать ClientScriptManager.GetWebResourceUrl ()
- Добавить элемент управления заголовком вашей главной страницы (или где-либо еще вам нравится)
Я включил короткий пример того, как этого добиться.
Пользовательский элемент управления в Mri.Controls
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI;
namespace Mri.Controls
{
public class ScriptLoader : Control
{
protected List<string> ScriptUrls;
public ScriptLoader()
{
ScriptUrls = new List<string>();
}
// Have to add libraries here because cannot access the Page object from the Constructor
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
AddScriptKey("Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
}
public void AddScriptKey(string key)
{
// Using the assembly location, find the WebResourceUrl
var webResourceUrl = Page.ClientScript.GetWebResourceUrl(typeof(ScriptLoader), key);
AddScriptUrl(webResourceUrl);
}
public void AddScriptUrl(string url)
{
// Check to see if script already exists
if (!ScriptUrls.Any(s => s.Equals(url)))
ScriptUrls.Add(url);
}
protected override void Render(HtmlTextWriter writer)
{
// Render the script tags
foreach (var scriptUrl in ScriptUrls)
{
writer.Write(string.Format("\n<script type=\"text/javascript\" src=\"{0}\"></script>", scriptUrl));
}
}
}
}
Добавьте TagPrefix в ваш Web.config в вашем веб-приложении
<pages>
<controls>
<add tagPrefix="mri" namespace="Mri.Controls" assembly="Mri.Controls"/>
</controls>
</pages>
Образец мастер-листа
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Page Title</title>
<mri:ScriptLoader id="scriptLoader" runat="server" />
</head>
<body>
<form id="form1" runat="server">
<asp:ContentPlaceHolder ID="cphBody" runat="server" />
</form>
</body>
</html>
Надеюсь, это соответствовало тому, что вы искали.