Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Web приложения > asp:ScriptManager


Автор: Budda 19.11.07, 08:25
Всё странички сайта посредством UrlRewriter'а разруливаются через index.aspx. Ну и asp:ScriptManager находится у меня на index.aspx.
Можно ли отображать этот asp:ScriptManager только для тех страничек, на которых будет использоваться AJAX? Например так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    <div id="dvScrMan" runat="server" visible="false">
      <asp:ScriptManager runat="server"></asp:ScriptManager>
    </div>

а в index.aspx.cs в PageLoad для нужных страничек делать dvScrMan.Visible=true? Не повлечёт ли это за собой каких-то последствий в виде бомб замедленного действия. Вроде не должно, верно? Ведь наличие внешнего дива по отношению к скрипт менеджеру ничем не должно мешать подключению нужных js-скриптов...?

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

Автор: UncleBob 19.11.07, 13:07
Вроде все нормально должно быть. В принципе, можно программно его добавлять, когда требуется... А когда не требуется - не добавлять.

На всякий случай...
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    this.Form.Controls.Add (new ScriptManager());


А что значит "Ложить в контролы"?

Автор: Budda 19.11.07, 13:22
Цитата Uncle_Bob @
А что значит "Ложить в контролы"?

Предположим на текущей страничке используется два ascx-элемента (UserControl) и в каждый добавлю по 1 SciptManager'у...?
ТИпа перед тем , как делать
Цитата Uncle_Bob @
this.Form.Controls.Add (new ScriptManager());

Проверить
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    bool bAbsent=true;
    foreach( Control c in this.Form.Controls )
     if ( c== ScriptManager ) // - Как проверить?
       bAbsent=false;
     
    if ( bAbsent == false )
      this.Form.Controls.Add (new ScriptManager());

Так делатЬ, да?

Автор: UncleBob 19.11.07, 13:35
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    if (null == ScriptManager.GetCurrent(this))
    {
      this.Form.Controls.Add (new ScriptManager());
    }


только из контролов правильнее использовать ScriptManagerProxy

Автор: Budda 19.11.07, 13:41
Спасибо.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)