Выбор идентификационным атрибутом с помощью JQuery в ASP.NET

Для некоторых языков (т.е. C++) утечка Ресурсов не должна быть причиной

, C++ основан на RAII.

, Если у Вас есть код, который мог бы перестать работать, возвратите или бросьте (то есть, самый нормальный код), затем необходимо перенести указатель в интеллектуальном указателе (предполагающий, что Вы имеете очень хороший причина не создать Ваш объект на стеке).

Коды возврата - больше подробное

, Они являются подробными, и имеют тенденцию разрабатывать во что-то как:

if(doSomething())
{
   if(doSomethingElse())
   {
      if(doSomethingElseAgain())
      {
          // etc.
      }
      else
      {
         // react to failure of doSomethingElseAgain
      }
   }
   else
   {
      // react to failure of doSomethingElse
   }
}
else
{
   // react to failure of doSomething
}

В конце, Вы кодируете, набор idented инструкций (я видел этот вид кода в производственном коде).

Этот код мог быть переведен в:

try
{
   doSomething() ;
   doSomethingElse() ;
   doSomethingElseAgain() ;
}
catch(const SomethingException & e)
{
   // react to failure of doSomething
}
catch(const SomethingElseException & e)
{
   // react to failure of doSomethingElse
}
catch(const SomethingElseAgainException & e)
{
   // react to failure of doSomethingElseAgain
}

, Которые чисто разделяют код и ошибочную обработку, которая может быть хороша вещь.

Коды возврата более хрупкие

Если не некоторое неясное предупреждение из одного компилятора (см. комментарий "phjr"), они могут легко быть проигнорированы.

С вышеупомянутыми примерами, примите, чем кто-то забывает обрабатывать его возможную ошибку (это происходит...). Ошибка проигнорирована при "возвращении" и возможном взрыве позже (т.е. Нулевой указатель). Той же проблемы не произойдет за исключением.

ошибка не будет проигнорирована. Иногда, Вы хотите, чтобы это не взорвалось, хотя... Таким образом, Вы должны, выбрал тщательно.

Коды возврата должны иногда переводиться

Скажем, у нас есть следующие функции:

  • doSomething, который может возвратить интервал, назвал NOT_FOUND_ERROR
  • doSomethingElse, который может возвратить bool "false" (для неудавшегося)
  • doSomethingElseSagain, который может возвратить Ошибочный объект (и с __ СТРОКА __, __ ФАЙЛ __ и с половина переменных стека.
  • doTryToDoSomethingWithAllThisMess, который, хорошо... Используйте вышеупомянутые функции и возвратите код ошибки типа...

, Каков тип возврата doTryToDoSomethingWithAllThisMess, если одна из его вызванных функций перестала работать?

Коды возврата не являются универсальным решением

, Операторы не могут возвратить код ошибки. Конструкторы C++ не могут, также.

Коды возврата означают, что Вы не можете объединить выражения в цепочку

заключение вышеупомянутой точки. Что, если я хочу записать:

CMyType o = add(a, multiply(b, c)) ;

я не могу, потому что возвращаемое значение уже используется (и иногда, оно не может быть изменено). Таким образом, возвращаемое значение становится первым параметром, отправленным как ссылка... Или нет.

Исключение вводится

, можно отправить различные классы за каждым видом исключения. Исключения Ressources (т.е. из памяти) должны быть легкими, но что-либо еще могло быть столь же тяжелым по мере необходимости (мне нравится Исключение Java, дающее мне целый стек).

Каждая выгода может затем быть специализирована.

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

Обычно, Вы не должны скрывать ошибку. Если Вы не повторно бросаете, по крайней мере, зарегистрируйте ошибку в файле, откройте messagebox, безотносительно...

Исключение... УНИЧТОЖЕНИЕ

проблема за исключением состоит в том, что злоупотребление их произведет код, полный попытки/выгод. Но проблема в другом месте: Кто пробует/ловит его код с помощью контейнера STL? Однако, те контейнеры могут отправить исключение.

, Конечно, в C++, никогда не позволяют исключению выйти из деструктора.

Исключение... синхронно

убедиться поймать их, прежде чем они произведут Ваш поток на его коленях или распространят в Вашем цикле сообщения Windows.

решение могло смешивать их?

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

Так, единственный вопрос, "что такое что-то, чего не должно происходить?"

Это зависит от контракта Вашей функции. Если функция принимает указатель, но указывает, что указатель должен быть непустым, то нормально выдавать исключение, когда пользователь отправляет Нулевого указателя (вопрос быть, в C++, когда не сделал функциональных ссылок использования автора вместо указателей, но...)

, Другое решение будет состоять в том, чтобы показать ошибку

Иногда, Ваша проблема состоит в том, что Вы не хотите ошибок. Используя исключения или ошибку коды возврата прохладны, но... Вы хотите знать об этом.

В моем задании, мы используем своего рода "Утверждать". Это будет, в зависимости от значений конфигурационного файла, неважно, опции компиляции отладки/выпуска:

  • регистрируются, ошибка
  • открывают messagebox с "Эй, у Вас есть проблема"
  • , открывают messagebox с "Эй, у Вас есть проблема, сделайте Вы хотите отладить"

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

легко добавить к унаследованному коду. Например:

void doSomething(CMyObject * p, int iRandomData)
{
   // etc.
}

приводит своего рода код, подобный:

void doSomething(CMyObject * p, int iRandomData)
{
   if(iRandomData < 32)
   {
      MY_RAISE_ERROR("Hey, iRandomData " << iRandomData << " is lesser than 32. Aborting processing") ;
      return ;
   }

   if(p == NULL)
   {
      MY_RAISE_ERROR("Hey, p is NULL !\niRandomData is equal to " << iRandomData << ". Will throw.") ;
      throw std::some_exception() ;
   }

   if(! p.is Ok())
   {
      MY_RAISE_ERROR("Hey, p is NOT Ok!\np is equal to " << p->toString() << ". Will try to continue anyway") ;
   }

   // etc.
}

(у меня есть подобные макросы, которые активны только на отладке).

Примечание, что на производстве, конфигурационный файл не существует, таким образом, клиент никогда не видит результат этого макроса... Но легко активировать его при необходимости.

Заключение

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

при кодировании исключения использования Вы знаете, что Ваш код может перестать работать, и обычно помещать противоогонь, ухватываются за выбранное стратегическое положение в Вашем коде. Но обычно, Ваш код больше о, "что он должен сделать" затем, "чего я боюсь, произойдет".

, Но когда Вы кодируете вообще, необходимо использовать лучший инструмент в Вашем распоряжении, и иногда, это, "Никогда не скрывают ошибку и показывают его как можно скорее". Макрос, который я говорил выше, следует за этой философией.

13
задан Jagd 17 August 2009 в 22:29
поделиться

8 ответов

То, что вы хотите сделать, это либо:

$("input[id$='_txtSomeData1']").val().....

, либо вы можете добавить класс или настраиваемый атрибут в текстовое поле, которое вы можете выбрать на

14
ответ дан 1 December 2019 в 22:07
поделиться

Есть много селекторов, которые можно использовать ... возможно, вы хотите добавить класс.

http : //docs.jquery.com/Selectors

0
ответ дан 1 December 2019 в 22:07
поделиться

Это большая жалоба сообщества на веб-формы ASP.Net. В ASP.Net 4.0 вы снова получаете контроль над своими идентификаторами, как если бы вы написали их в необработанном HTML. В качестве альтернативы, без .Net 4.0, вы могли бы использовать ASP.Net MVC, который по большей части не использует серверные элементы управления, поэтому у вас не будет проблем.

Но, как говорит хэппитайм, Гарри, добавление класса может Вы захотите, если вы работаете с веб-формами и jquery.

1
ответ дан 1 December 2019 в 22:07
поделиться

Java не предоставляет прямого способа запросить MAC-адрес хоста в вашей сети, поскольку он абстрагируется библиотеками сокетов Java.

В некотором смысле это имеет смысл, поскольку MAC-адрес хоста практически ничего не говорит. Не существует такого понятия, как «MAC-адрес хоста».

  • Многие хосты будут иметь несколько сетевых адаптеров, все с отдельным MAC-адресом, с помощью которых они могут подключаться к сети. Компьютер, на котором я сейчас использую, имеет проводной адаптер Ethernet, адаптер WiFi и адаптер Firewire, и все они имеют свой собственный MAC-адрес. Это означает, что для хоста нет окончательного MAC-адреса.
  • Если хост находится в другой подсети, ARP фактически предоставит вам MAC-адрес последнего маршрутизатора, через который прошел ваш пакет, вместо MAC-адреса хоста. вы сканируете.
    • Вы можете запустить инструмент командной строки ARP и проанализировать его вывод.
    • Вы можете использовать какой-то вызов JNI. Я не слишком знаком с JNI, поэтому не могу вам с этим помочь.
    • Напишите отдельное небольшое собственное приложение, к которому вы можете получить доступ из Java через Telnet или какой-либо другой протокол, и которое будет запускать ARP команда для вас.
  • Собственно для хоста, который вы хотите просканировать:
    • Вы можете использовать SNMP, как предлагают некоторые другие ответы в этой ветке. Я полагаюсь на эти ответы, чтобы заставить их работать на вас. SNMP - отличный протокол, но имейте в виду, что идентификаторы OID SNMP могут зависеть как от платформы, так и от производителя. OID, которые работают для Windows, не всегда работают для Linux и наоборот.
    • Если вы знаете, что ваш хост работает под управлением Windows, вы можете использовать WMI . Класс Win32_NetworkAdapter содержит нужную вам информацию, но имейте в виду, что он возвращает все сетевых адаптеров хоста, даже те, которые созданы Windows. Кроме того, для сканируемого хоста требуются учетные данные администратора. Google расскажет, как подключиться к WMI с Java.
    • Если вы знаете, что на вашем хосте работает OS X, Это, наряду с навигацией по иерархии дерева (что-то вроде "$ (element) .children ('. MyClass'). Show ()" , может быть хорошим способом сделать это без идентификаторов.

      Btw , http://visualjquery.com/ - отличный способ просмотреть API-интерфейсы jQuery и т. Д.

0
ответ дан 1 December 2019 в 22:07
поделиться

Селекторы подстановочных знаков jQuery - это то, что вам может здесь не хватать.

0
ответ дан 1 December 2019 в 22:07
поделиться

, если javascript находится в том же файле .aspx, вы можете сделать:

$('<%= txtSomeData1.ClientID %>').val('Some More Data!!');
7
ответ дан 1 December 2019 в 22:07
поделиться

Если вы собираетесь перенести JavaScript в свой собственный. js вы застряли либо с жестким кодированием в id (наиболее эффективным), либо с селектором регулярных выражений, либо с использованием неэффективного селектора по имени класса.

Однако, если он находится в том же файле, что и элемент управления .NET, вы всегда можете использовать $ ('<% = txtSomeData1.ClientID%>')

1
ответ дан 1 December 2019 в 22:07
поделиться

Вы можете использовать нотацию элемента [id $ = Identifier], которая ищет идентификатор, заканчивающийся указанным вами текстом (это идентификатор, который вы указываете в разметке ASPX). Вот пример, показывающий, как вы можете его использовать (см. Слайд № 30): Создание приложений интрасети с помощью ASP.NET AJAX и jQuery .

0
ответ дан 1 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

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