ОБНОВЛЕНИЕ: я объясняю это немного подробнее в посте в блоге .
Предполагая, что вы имеете в виду страницы ASPX, когда вы указываете "HTML-страницы", вот что я делаю:
Допустим, у меня есть страница с именем foo.aspx, и у меня есть специфический для нее JavaScript. Я называю файл .js foo.aspx.js. Затем я использую что-то вроде этого в base классе страниц (т.е. все мои страницы наследуются от этого класса):
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
string possiblePageSpecificJavaScriptFile = string.Format("{0}.js", this.TemplateControl.AppRelativeVirtualPath);
if (File.Exists(Server.MapPath(possiblePageSpecificJavaScriptFile)) == true)
{
string absolutePath = possiblePageSpecificJavaScriptFile.Replace("~", Request.ApplicationPath);
absolutePath = string.Format("/{0}", absolutePath.TrimStart('/'));
Page.ClientScript.RegisterClientScriptInclude(absolutePath, absolutePath);
}
}
Таким образом, для каждой страницы в моем приложении будет выполняться поиск файла * .aspx.js, который соответствует имени страницы (в нашем примере foo.aspx.js) и помещает в отображаемую страницу тег сценария, ссылающийся на него. (Код после base.OnLoad(e);
лучше всего извлечь, я просто стараюсь сделать его максимально коротким!)
Для этого у меня есть взлом реестра, который приведет к свертыванию любых файлов * .aspx.js под страницей * .aspx в обозревателе решений Visual Studio (т.е. он будет скрыт под страницей, как и * Файл .aspx.cs делает). В зависимости от используемой версии Visual Studio взлом реестра может быть разным. Вот пара, которую я использую с Windows XP (я не знаю, различаются ли они для Vista, потому что я не использую Vista) - скопируйте каждый из них в текстовый файл и переименуйте его с помощью .reg расширение, затем выполните файл:
Visual Studio 2005
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E24C65DC-7377-472b-9ABA-BC803B73C61A}\RelatedFiles\.aspx\.js]
@=""
Visual Studio 2008
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{E24C65DC-7377-472b-9ABA-BC803B73C61A}\RelatedFiles\.aspx\.js]
@=""
Возможно, вам потребуется перезагрузить компьютер, чтобы они вступили в силу. Кроме того, вложение будет происходить только для вновь добавленных файлов .js. Любые имеющиеся у вас файлы с именем * .aspx.js могут быть вложены путем их повторного добавления в проект или изменения вручную XML-файла .csproj.
Во всяком случае, именно так я и делаю, и это действительно помогает поддерживать порядок. Для файлов JavaScript, содержащих часто используемый JavaScript, я храню их в папке корневого уровня с именем JavaScript, а также в своем базовом классе страниц есть код, который добавляет эти ссылки. Это должно быть достаточно просто, чтобы понять. Надеюсь, это кому-нибудь поможет.