ASP.NET - [Закрываются] общие глюки

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

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

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

14
задан Joel Coehoorn 5 January 2012 в 18:52
поделиться

18 ответов

Динамично не добавляйте средства управления после страницы init событие, поскольку это завинтит дерево состояния отображения.

21
ответ дан 1 December 2019 в 05:55
поделиться

(VB.NET) при отправке Объекта через Свойство, Получает средство доступа в функцию с ключевым словом ByRef, это на самом деле попытается обновить объект с помощью средства доступа Набора для Свойства.

Исключая:

UpdateName(ByRef aName as String)

UpdateName(Employee.Name) попытается обновить имя при помощи Набора на свойстве Name Сотрудника.

-5
ответ дан 1 December 2019 в 05:55
поделиться

Весь код я должен поддержать, что все еще похож на него, был написан в vb6, показав полное незнание более новых стилей.

я говорю вещи как CreateObject (), чрезмерный < % %> блоки, И/или вместо AndAlso/OrElse, Len () вместо.Length (), s/o венгерские бородавки префикса, Тусклый MyVariable без типа, функционирует без типа возврата... Я мог продолжить.

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

Вы не можете сослаться ни на что вообще выше корневой папки приложения.

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

При использовании gridview без управления источником данных (т.е. привязке набора данных прямо с управлением) необходимо вручную реализовать события сортировки и подкачки страниц как показано здесь:

http://ryanolshan.com/technology/gridview-without-datasourcecontrol-datasource/

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

Сегодня я просто изучил это: Связывание () метод, как используется с GridViews и ListViews, не существует. Это на самом деле скрывает некоторое волшебство Отражателя, которое превращает его в Оценку () и некоторое переменное присвоение.

результат этого то, что вызовы как:

<%# FormatNameHelper(Bind("Name")) %>

, что совершенно допустимый взгляд перестанет работать. См. это сообщение в блоге для получения дополнительной информации.

3
ответ дан 1 December 2019 в 05:55
поделиться

Не редактируйте свой web.config с блокнотом, если у Вас будут символы с диакритикой, то он заменит его одним с неправильным кодированием. Это будет выглядеть одинаково все же. Просто Ваше приложение не будет работать.

3
ответ дан 1 December 2019 в 05:55
поделиться

Необходимость перейти через обручи для получения.ClientID свойства в JavaScript.

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

Хм... Я держал пари, что мог настроить метод для этого самостоятельно через отражение.

4
ответ дан 1 December 2019 в 05:55
поделиться

Page_Load выполняется перед обработчиками управления. Таким образом, Вы не можете внести изменения в обработчике событий и затем использовать те изменения в загрузке страницы. Это становится проблемой, когда у Вас есть средства управления на основной странице (такие как управление входом в систему). Можно обойти проблему путем перенаправления, но это - определенно глюк.

5
ответ дан 1 December 2019 в 05:55
поделиться

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

6
ответ дан 1 December 2019 в 05:55
поделиться

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

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

Целая вещь жизненного цикла в целом.

Не то, чтобы я вижу что-то не так с ним, это просто, что Вы были бы поражены числом людей, которые начинают работать над большими проектами ASP.NET прежде понимание его, а не наоборот. Следовательно, это становится глюком.

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

7
ответ дан 1 December 2019 в 05:55
поделиться

Состояние отображения ... при использовании его..., может выйти из-под контроля, если Вы не уделение внимания ему.

8
ответ дан 1 December 2019 в 05:55
поделиться

Если вы запускаете классические приложения ASP в том же виртуальном каталоге, что и приложение ASP.Net, первое попадание в приложение должно быть на странице ASP.Net. Это гарантирует, что AppPool будет построен с правильными конфигурациями контекста. Если первой попавшейся страницей является классическая страница ASP, результаты могут отличаться от приложения к приложению. В целом AppPool настроен на использование последней версии инфраструктуры.

2
ответ дан 1 December 2019 в 05:55
поделиться

Linq: если вы используете Linq-To-SQL, вы вызываете SubmitChanges () в контексте данных, и это вызывает исключение (например, дублирование ключа или другое нарушение ограничения ), значения объектов-нарушителей остаются в вашей памяти во время отладки и будут повторно отправляться каждый раз, когда вы впоследствии вызываете SubmitChanges () .

А вот реальный кикер: неверные значения останутся в памяти , даже если вы нажмете кнопку «стоп» в своей среде IDE и перезапустите! Я не понимаю, почему кто-то подумал, что это хорошая идея - но этот маленький значок ASP.NET, который появляется up в системном трее остается запущенным и, похоже, сохраняет кэш объектов. Если вы хотите очистить память, щелкните этот значок правой кнопкой мыши и принудительно выключите его! GOTCHA!

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

Создание управления, подобное повторителю, и незнание о INamingContainer .

2
ответ дан 1 December 2019 в 05:55
поделиться

Незнание об огромном количестве существующих и расширяемых функций в структуре. Часто переделываются такие вещи, как членство, роли, авторизация, карты сайта. Затем есть элементы управления и связанные теги, которые можно настроить для устранения проблем с идентификаторами клиентов, среди прочего. Также простые вещи, такие как незнание, как правильно использовать файл .config для автоматического импорта пространств имен в шаблоны, и возможность делать это на основе каталога. Менее известные вещи, такие как выражения тегов, также иногда могут быть полезны. Конечно, как и во всех фреймворках, есть кривая обучения и всегда что-то оставляет желать лучшего, однако чаще всего лучше настроить и расширить существующий фреймворк, а не создавать свою собственную.

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

Отладка - очень крутая функция ASP.NET, но, как только вы измените код в папке App_Code, вы запускаете перенастройку приложения, что приводит к тому, что все сеансы будут потеряны.

Это может стать очень раздражающим при отладке веб-сайта, но вы можете легко предотвратить это использовать режим « режим» : Это просто сервис для начала и строки для изменения в Web.config: Обратитесь к MSDN: http://msdn.microsoft.com/en-us/library/ms178586.aspx

  1. Режим inproc , который хранит состояние сеанса в памяти на веб-сервере. Это значение по умолчанию .
  2. Режим государственного деятеля , который хранит состояние сеанса в отдельном процессе, называемом Service State ASP.NET . Это обеспечивает сохранение состояния сеанса , если веб-приложение перезагружается, а также делает состояние сеанса доступно для нескольких веб-серверов на веб-ферме.
  3. SQL Server ...
  4. Пользовательские ...
  5. OFF!
3
ответ дан 1 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

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