Лучший способ переключить видимость Div в зависимости от строки запроса в C #? - PullRequest
1 голос
/ 20 сентября 2010

У меня около 20 дел на странице aspx. В любое время только один из них будет виден. Мне нужно решить, какой div показывать в зависимости от строки запроса.

http://...?mode=<ModeName>

Самый простой способ - начать с невидимого для всех div, а затем просто включить переключатель QueryString и записать регистры для всех возможных имен ModeNames (или получить его в большой структуре if-else)

Мне не очень нравятся вещи с жестким кодированием, потому что если в будущем, если я добавлю / удалю какой-либо div, мне нужно будет «помнить», чтобы внести необходимые изменения в местах, которые переключают div.

Я думал о создании перечисления со всеми именами и передаче этого перечисления в функцию, чтобы я мог перебрать все перечисления и соответственно настроить видимость. Таким образом, мне нужно только добавить имя div в верхнем объявлении enum. Но это не совсем сработало (возможно, я слишком нервничаю, чтобы заставить его работать)

Является ли Switch block моим единственным выходом из этого? У кого-нибудь есть лучший способ сделать это? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 20 сентября 2010

Я предлагаю установить связь между данными, передаваемыми в строке запроса, и именами (и идентификаторами) div, которые вы хотите обработать.

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

Надеюсь, это поможет,

0 голосов
/ 20 сентября 2010

Я хотел бы выполнить некоторые или все из следующих действий:

  • Определить различные режимы вашего окна в перечислении (public enum ModeNames {View, Edit, Create, Summary ...}).Сделайте это перечисление универсальным, но описательным.
  • Предоставьте свойство DisplayMode, которое анализирует QueryString в значении перечисления.Вы должны иметь контроль над ModeNames, добавленными в QueryString, но, поскольку это строка запроса и, следовательно, клиент может вводить все, что угодно, я бы включил некоторую проверку ошибок, которая покажет режим просмотра «по умолчанию», еслиQueryString не является одним из ожидаемых значений.
  • Дайте элементам div runat = server и атрибут ID (я полагаю, у вас уже есть, так как вы хотите сделать это в C #, а не JavaScript), и в вашемОбработчик Page_PreRender задает для свойства Visible каждого элемента div (на который ссылается его идентификатор как объект) выражение, оценивающее, является ли текущий DisplayMode одним из режимов, в которых этот элемент div должен быть видимым (например, thisDiv.Visible = new[]{ModeNames.Create, ModeNames.Edit}.Contains(DisplayMode)).
  • В качестве альтернативы, вместо второго шага, вы можете сделать это в разметке, либо указав свойство Visible для div (как объект на стороне сервера), используя аналогичное встроенное выражение, оценивающее DisplayMode, либо включив обработчик JavaScript OnLoad JavaScriptдля div (который больше не должен быть серверным), который устанавливает видимостьиспользуя DOM, основанный на том же встроенном выражении C #.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...