Параметры RegisterClientScriptBlock используются в реальных сценариях? - PullRequest
11 голосов
/ 28 ноября 2011

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

enter image description here

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

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

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


MSDN:

Control : «элемент управления, регистрирующий клиентский скрипт»

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

Тип : «тип блока клиентского скрипта»

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 29 ноября 2011

самая важная часть это контроль какой элемент управления в HTML-тегах вы хотите зарегистрировать скрипт например, если у вас есть пользовательский контроль, и вы хотите запустить скрипт только для этого, используйте эту строку

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

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

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertscript", "document.getElementById('page_h1TAG')", true);
0 голосов
/ 29 ноября 2011

Метод 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 полезен, когда два разных типа пытаются зарегистрировать сценарии с одинаковыми строковыми ключами.

0 голосов
/ 28 ноября 2011

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

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

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

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

...