Подтвердить что ты не робот

Как заставить page.ClientScript.RegisterClientScriptInclude включать в голову?

Входящие ссылки script, в частности jQuery, отображаются после просмотра. Есть ли способ получить это в < головa > ?

Page.ClientScript.RegisterClientScriptInclude("jQuery", "/scripts/jquery.js");

Я пытаюсь зарегистрировать jquery.js на загрузке пользовательской контрольной страницы.

Спасибо заранее!

P.S. Если это невозможно сделать (с помощью ClientScript), у кого-нибудь есть идея, почему они не создали его?

ОБНОВЛЕНИЕ

Основная особенность менеджера ClientScript, в которой я нуждаюсь, - это возможность включать только script один раз. Элемент управления может отображаться много раз на странице, но я хочу, чтобы один jQuery script включал

4b9b3361

Ответ 1

чтобы прямо вставить его в HEAD:

HtmlGenericControl Include = new HtmlGenericControl("script"); 
Include.Attributes.Add("type", "text/javascript"); 
Include.Attributes.Add("src", sInclude); 
this.Page.Header.Controls.Add(Include); 

вы хотели бы проверить, чтобы убедиться, что его еще нет, прежде чем добавлять его.

Ответ 2

У меня была эта проблема некоторое время назад, и я не использовал RegisterClientScriptInclude.

Я разместил местозаполнитель в заголовке страницы и добавил тэг script к заполнителю через HtmlGenericControl.

Я посмотрю, смогу ли найти свой код, и я отредактирую свой ответ с ним.

ИЗМЕНИТЬ

Я не смог найти свой код, поэтому я только что его создал:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <asp:PlaceHolder runat="server" ID="HeadPlaceHolder"></asp:PlaceHolder>
</head>    
<body>
    ...
</body>
</html>

И код за:

protected void Page_Load(object sender, EventArgs e)
{
    HeadPlaceHolder.Controls.Add(/* Your control here */);
}

Ответ 3

Эй, старый вопрос, но, возможно, это все еще интересно для кого-то.

Я создаю собственный UserControl с .net 3.5sp1, столкнулся с теми же проблемами. Следующее решение работает для меня.

Этот код из класса UserControl:

protected void Page_Init( object sender, EventArgs e )
{
    const string scriptKey = "UserControlScript";

    if( !Page.ClientScript.IsClientScriptIncludeRegistered( Page.GetType(), scriptKey ) )
    {
        Page.ClientScript.RegisterClientScriptInclude( Page.GetType(), scriptKey, ResolveClientUrl("~/js/UserControl.js" ) );
    }
}

Я использовал Page_Init, потому что мне нужно сделать еще немного инициализации, которая должна быть выполнена до того, как вызывается Page_Load страницы вложенности.

Ответ 4

Похоже, что использовать page.ClientScript для добавления скриптов в заголовок страницы невозможно.