Параметры RegisterClientScriptBlock используются в реальных сценариях?

http://i.stack.imgur.com/dVjHt.jpg

enter image description here

Я никогда не понимал реального использования способов Control, type, key этого класса.

В общем, Ive всегда используется с: this , GetType() , "xx"

но теперь я действительно хочу понять.


msdn:

Управление: "элемент управления, который регистрирует клиент script"

так...? какая разница, кто его зарегистрировал? script будет в начале страницы...

Тип: "тип клиента script block"

тип??? его javascript. почему он хочет от меня другого типа?

Ключ: "уникальный идентификатор"

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

Могу ли я использовать реальный сценарий жизни, в котором я TRULY должен играть с этими параметрами?

Ответ 1

наиболее важной частью является "Контроль" которые управляют тегами html, вы хотите зарегистрировать script например, если у вас есть пользовательский элемент управления, и вы хотите запустить script только для этого, используя эту строку

ScriptManager.RegisterStartupScript(this, this.GetType(), "alertscript", "document.getElementById('userControl_h1TAG')", true); 

но если вы хотите зарегистрировать блок и script ко всей части этой страницы, используйте эту строку в коде CS пользовательского контроля:

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertscript", "document.getElementById('page_h1TAG')", true);

Ответ 2

После просмотра MSDN я нашел метод с несколько разными параметрами, но я думаю, что ответы должны дать вам больше информации: (http://msdn.microsoft.com/en-us/library/bb350750.aspx):

Контроль: клиентские script блоки, зарегистрированные с помощью этого метода, отправляются на страницу только тогда, когда элемент управления представляет собой элемент управления, который находится внутри обновляемого элемента управления UpdatePanel.

Тип. Этот параметр обычно указывается с помощью оператора typeof (С#) или оператора GetType (Visual Basic) для получения типа элемента управления, который регистрирует script.

И я думаю, что ключ только для того, чтобы убедиться, что один кодовый блок не включен дважды? Или это дает вам предупреждение, если вы снова используете тот же ключ?

Ответ 3

Метод System.Web.UI.ScriptManager.RegisterClientScriptBlock вызывает за кулисами внутренний метод System.Web.UI.ScriptRegistrationManager.RegisterClientScriptBlock, который использует параметр control для вызова System.Web.UI.ClientScriptManager.RegisterClientScriptBlock путем ссылки на control.Page.ClientScript.RegisterClientScriptBlock.

Итак, на самом деле, когда вы делаете такой вызов:

MyScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertScript", "alert('hi')", true);

Он идентичен вызывающему:

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "alertScript", "alert('hi')", true);        

Параметр type подходит, когда два разных типа пытаются зарегистрировать скрипты с одинаковыми строковыми клавишами.