Почему не может Вы UnRegisterStartupScript?

Если программа не будет работать без файлов, кажется, что разделение их в отдельный repo является плохой идеей. У нас есть большие наборы тестов, что мы врываемся в отдельный repo, но это - действительно "вспомогательные" файлы.

Однако Вы можете управлять файлами в отдельном repo и затем использовать git-submodule для получения по запросу их в проект нормальным способом. Так, у Вас все еще была бы полная история всего Вашего источника, но насколько я понимаю у Вас только будет один соответствующий пересмотр Вашего подмодуля изображений. git-submodule средство должно помочь Вам сохранить правильную версию кода в соответствии с правильной версией изображений.

Вот польза введение в подмодули из Книги Мерзавца.

9
задан JoshJordan 25 August 2009 в 14:18
поделиться

2 ответа

Я предполагаю, что вы захотите «отменить регистрацию» скрипта (который уже был зарегистрирован) при некоторых условиях, например:

Page.ClientScript.RegisterStartupScript(this.GetType(), "KeyName", "alert('changed my mind')", true);
...
if(condition)
    Page.ClientScript.UnregisterStartupScript(this.GetType(), "KeyName", "alert('changed my mind')", true);

Почему это просто нельзя изменить на:

if(!condition)
    Page.ClientScript.RegisterStartupScript(this.GetType(), "KeyName", "alert('changed my mind')", true);
5
ответ дан 4 December 2019 в 13:03
поделиться

На самом деле это хуже, чем вы думаете - «просто перерегистрировать и ничего не делать» тоже не вариант. Метод register проверяет, зарегистрирован ли уже сценарий с этим ключом, и ничего не делает, если это так. После того, как вы вызовете RegisterStartupScript , ничто из того, что вы можете сделать, не остановит рендеринг этого сценария.

Что касается того, почему Microsoft сделала это, я предполагаю, что возможность изменения или удаления зарегистрированных сценариев была просто забыта, когда RegisterStartupScript был впервые разработан. Выбранный дизайн сделал нетривиальным вернуться и создать метод отмены регистрации, поэтому теперь для этого потребуется веская причина.

Когда вы регистрируете сценарий, он сохраняется в двух местах в ClientScriptManager. ListDictionary позволяет проверять, зарегистрирован ли уже сценарий, а ArrayList сохраняет фактические сценарии по мере их отображения. Я предполагаю, что ArrayList используется для обеспечения того, чтобы скрипты отображались в том порядке, в котором они были зарегистрированы, но это также означает, что вы не можете определить, какая строка в ArrayList принадлежит какому ключу.

ужасно сложно оснастить ваш собственный класс страницы методами для MaybeAddStartupScript (ключ, сценарий) и ChangedMyMindAboutThatStartupScript (ключ) . Сохраните ключи и скрипты в своем собственном словаре, а затем в PreRender зарегистрируйте любые скрипты, которые дошли до этого места. Хотя, конечно, неприятно делать это самому.

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

ужасно сложно оснастить свой собственный класс страницы методами для MaybeAddStartupScript (ключ, сценарий) и ChangedMyMindAboutThatStartupScript (ключ) . Сохраните ключи и скрипты в своем собственном словаре, а затем в PreRender зарегистрируйте любые скрипты, которые дошли до этого места. Хотя, конечно, неприятно делать это самому.

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

ужасно сложно оснастить свой собственный класс страницы методами для MaybeAddStartupScript (ключ, сценарий) и ChangedMyMindAboutThatStartupScript (ключ) . Сохраните ключи и скрипты в своем собственном словаре, а затем в PreRender зарегистрируйте любые скрипты, которые дошли до этого места. Хотя, конечно, неприятно делать это самому.

Ужасно сложно оснастить свой собственный класс страницы методами для MaybeAddStartupScript (ключ, сценарий) и ChangedMyMindAboutThatStartupScript (ключ) . Сохраните ключи и скрипты в своем собственном словаре, а затем в PreRender зарегистрируйте любые скрипты, которые дошли до этого места. Хотя, конечно, неприятно делать это самому.

Ужасно сложно оснастить ваш собственный класс страницы методами для MaybeAddStartupScript (ключ, сценарий) и ChangedMyMindAboutThatStartupScript (ключ) . Сохраните ключи и скрипты в своем собственном словаре, а затем в PreRender зарегистрируйте любые скрипты, которые дошли до этого места. Хотя, конечно, неприятно делать это самому.

9
ответ дан 4 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: