ASP.NET. Сборник рецептов (+ CD-ROM)
Павел Агуров
В книге собраны практические советы и примеры, которые помогут при создании веб-приложений с использованием ASP.NET: разработка архитектуры веб-приложения, его отладка, профилирование, защита, конфигурирование, работа с данными и многое другое. Рассмотрены специальные инструменты и утилиты, которые позволяют ускорить и упростить разработку и отладку веб-приложений. Уделено внимание обработке исключений в веб-приложениях. Отдельная глава посвящена созданию отчетов в MS Excel.
Книга будет полезна не только программистам, которые уже используют в своих разработках ASP.NET, но и тем, кто переходит на технологию ASP.NET с классической ASP или языка РНР.
На компакт-диске приведен исходный код рассмотренных примеров.
Для программистов.
Издательство: БХВ-Петербург, 2010 г.
ISBN 978-5-9775-0521-5
Количество страниц: 528.
Содержание книги «ASP.NET. Сборник рецептов (+ CD-ROM)»:
- 1 Введение
- 2 Для кого эта книга
- 2 О программном коде
- 3 Краткое описание глав
- 4 Благодарности
- 4 Обратная связь
- 5 Глава 1. Архитектура и общие вопросы
- 5 1.1. Основные отличия ASP.NET 1.1 и 2.0
- 7 1.2. В ASP было
- 8 1.3. Можно ли запустить приложение ASP.NET под Apache
- 8 1.4. Где найти исходный код Framework
- 8 1.5. Использование SSI include в ASP.NET
- 9 1.6. Как узнать версию ASP.NET, под которой работает сайт
- 9 1.7. Как узнать браузер и версию клиента, запустившего сайт
- 9 1.8. Как узнать параметры компьютера, на котором работает сайт
- 9 1.9. Где расположен временный каталог
- 10 1.10. Как изменить временный каталог ASP.NET
- 10 1.11. Информация о соединении
- 10 1.12. Зачем создается пользователь ASPNET
- 10 1.13. Где сохранить данные при переходе между страницами
- 11 1.13.1. Адресная строка
- 11 1.13.2. Куки
- 12 1.13.3. Скрытые поля
- 12 1.13.4. Состояние страницы
- 12 1.13.5. Сессия
- 13 1.13.6. Память приложения
- 14 1.13.7. Что же выбрать
- 14 1.14. Не используйте подчеркивание в имени серверов
- 14 1.15. Общие правила создания страниц
- 14 1.15.1. Не путайте разметку и код
- 15 1.15.2. Не встраивайте C#-код в ASPX-файл
- 15 1.15.3. Используйте отдельные JS-файлы
- 16 1.15.4. Используйте отдельные CSS-файлы
- 16 1.15.5. Используйте мастер-страницы
- 16 1.15.6. Создавайте базовые классы страниц
- 16 1.15.7. Используйте свойства для обращения к сессии и состоянию
- 17 1.15.8. Не используйте Convert.To-методы, когда этого не требуется
- 18 1.15.9. Не используйте TryParse, когда не проверяется результат
- 18 1.15.10. Проверяйте данные не только на клиенте, но и на сервере
- 18 1.15.11. Не создавайте глубокой иерархии элементов управления
- 19 1.15.12. Используйте события для обмена между элементами управления и их контейнерами
- 19 1.15.13. Будьте аккуратны со статическими переменными
- 20 1.15.14. Правила обработки исключений
- 20 1.15.15. Не выводите входные данные напрямую на страницу
- 20 1.15.16. Подготовка к тестированию
- 20 1.16. Как заблокировать одновременный доступ Application
- 20 1.17. Простой класс доступа к данным
- 30 1.18. Реализация единого дизайна страниц
- 30 1.19. Процедура восстановления пароля
- 31 1.20. Файл global.asax и события
- 31 1.20.1. Наиболее важные методы global.asax
- 32 1.20.2. Можно ли создать global.asax в виде CS-файла
- 33 1.20.3. Определение причины закрытия сайта
- 34 1.21. Модули HTTP и обработчики HTTP
- 35 1.21.1. Модули HTTP
- 37 1.21.2. Обработчики HTTP
- 38 1.21.3. Стандартные обработчики HTTP
- 38 1.22. Как сделать иконку для сайта (Favicon)
- 39 1.23. Ввод чисел с плавающей точкой
- 41 1.24. В чем разница между CurrentCulture и CurrentUICulture
- 41 1.25. Отправка почты из ASP.NET-приложения
- 41 1.25.1. Использование класса SmtpClient
- 47 1.25.2. Стандартные настройки SMTP в ASP.NET 2.0
- 48 1.25.3. Решение проблемы с русскими символами
- 49 1.25.4. Игнорирование проверки сертификата SSL
- 49 1.25.5. Как отправить событие в календарь Outlook
- 50 1.26. Проверка орфографии
- 51 1.27. Как задать допустимое время выполнения скриптов
- 51 1.28. Почему установка executionTimeout не работает
- 51 1.29. Offline-режим для приложения
- 52 1.30. Кроссбраузерность
- 52 1.30.1. Проблемы не IE-браузеров
- 52 1.30.2. Фильтры браузеров
- 53 1.30.3. Применение стилей только для IE
- 53 1.30.4. Условные выражения в CSS
- 54 1.30.5. Прыгающая ширина поля ввода в IE
- 54 1.30.6. Прозрачная PNG-картинка в браузере IE
- 55 1.30.7. Ограничение на число файлов стилей в браузере IE
- 55 1.30.8. Удаление рамки с активной ссылки
- 55 1.31. Разное про HTML
- 55 1.31.1. Лишний отступ снизу и подчеркивание изображения внутри ссылки
- 55 1.31.2. Вставка флэш-файлов в страницу
- 56 1.31.3. «Отладка» верстки
- 56 1.31.4. Преобразование HTML-текста
- 57 1.31.5. Как передать значение из JS-кода на сторону сервера
- 57 1.31.6. Как вывести значение в HTML
- 57 1.31.7. Предупреждение о закрытии браузера (только IE и Firefox)
- 58 1.31.8. Двигающийся текст
- 58 1.31.9. Блокировка экрана на время длительной операции
- 61 1.31.10. Определение текущей кодировки страницы
- 61 1.32. Совместимость
- 61 1.32.1. Как определить, поддерживает ли браузер пользователя ActiveX
- 61 1.32.2. Как определить, поддерживает ли браузер пользователя JavaScript
- 61 1.33. Дни месяца по-русски
- 62 1.34. Запуск задач по расписанию
- 62 1.34.1. Запуск задач в ASP.NET с помощью таймера или потока
- 63 1.34.2. Запуск задач в ASP.NET с помощью кэша
- 64 1.34.3. Вызов определенного URL через Windows-планировщик
- 65 1.35. Использование встроенных ресурсов
- 65 1.35.1. Встроенные изображения
- 67 1.35.2. Строковые ресурсы
- 68 1.36. Работа с изображениями и пиктограммами
- 68 1.36.1. Изменение размера изображения
- 69 1.36.2. Создание пиктограммы
- 70 1.36.3. Анимированный GIF
- 71 1.36.4. Обрезка изображений
- 71 1.37. Разное
- 71 1.37.1. Как преобразовать массив в строку с разделителем
- 71 1.37.2. Перекодировка текста
- 72 1.37.3. Преобразование в Base64 и обратно
- 72 1.37.4. Преобразование из Win1251 в Koi8 и обратно
- 73 1.37.5. Преобразование цвета в строку и обратно
- 73 1.37.6. Преобразование цвета в HTML-формат
- 74 1.37.7. Преобразование цвета в целое число и обратно
- 74 1.37.8. Возможности форматирования методов Format и Eval
- 76 Глава 2. Формы
- 76 2.1. Получение параметров формы
- 77 2.2. Модификация страницы до вызова метода Page_Load
- 77 2.3. Почему Page_Load вызывается два раза
- 77 2.4. Сохранение позиции скроллинга в браузере
- 78 2.5. Отображение данных в строке состояния браузера
- 78 2.6. Программная установка метатегов
- 79 2.7. Установка фокуса на элемент управления
- 79 2.8. Установка фокуса по умолчанию
- 79 2.9. Задание кнопки по умолчанию
- 79 2.10. На странице не отображаются русские буквы
- 80 2.11. Задание фона страницы из кода
- 80 2.12. Комментирование кода внутри ASPX-страницы
- 80 2.13. Комментирование внутри элементов управления
- 81 2.14. Открытие страницы по кнопке в новом окне
- 81 2.15. Использование WinForms-компонентов в веб-проектах
- 84 2.16. Как сделать аналог метода MessageBox.Show
- 85 2.17. Ручное формирование HTML-кода страницы
- 87 2.18. Мастер-страницы (master pages)
- 87 2.18.1. Создание шаблона страниц
- 90 2.18.2. Доступ к мастер-странице
- 91 2.18.3. Передача данных из мастер-страницы в контент
- 93 2.18.4. Регистрация JS-скрипта для мастер-страницы
- 93 2.18.5. Доступ к ScriptManager мастер-страницы
- 94 2.18.6. Указание мастер-страницы через web.config
- 95 2.18.7. Динамический выбор мастер-страницы
- 95 2.18.8. Выбор мастер-страницы в зависимости от браузера
- 96 2.18.9. Как задать тему для мастер-страницы
- 98 2.18.10. Установка метатегов мастер-страницы
- 98 2.19. Динамическое добавление JS-файла к странице
- 99 2.20. Динамическое добавление CSS-файла к странице
- 99 2.21. Динамическое добавление HTML-кода на страницу
- 99 2.22. Просмотр исходного кода страницы
- 100 2.23. Получение всех введенных данных формы
- 100 2.24. Как получить значение hidden-поля в коде
- 100 2.25. «Горячие» клавиши страницы
- 100 2.25.1. Использование свойства AccessKey
- 101 2.25.2. Использование JS-скрипта
- 101 2.26. Автоматическое обновление страницы по времени
- 101 2.26.1. Использование JavaScript
- 102 2.26.2. Использование метатегов
- 103 2.27. Печать страницы на принтер по умолчанию
- 105 2.28. Создание PDF-файла из страницы
- 109 Глава 3. Элементы управления
- 109 3.1. Общие вопросы элементов управления
- 109 3.1.1. Регистрация элементов управления в eb.config
- 109 3.1.2. Получение HTML-кода элемента
- 110 3.1.3. Получение клиентских идентификаторов (ClientID)
- 111 3.1.4. Удаление ненужных клиентских идентификаторов (ClientID)
- 112 3.1.5. Улучшение работы с ClientID в ASP.NET 4.0
- 112 3.1.6. Отключение табличного представления форм (ASP.NET 4.0)
- 113 3.1.7. Использование серверных тегов в серверных элементах управления
- 115 3.1.8. Создание элементов из строки
- 115 3.1.9. Скрыть/показать элемент страницы
- 116 3.2. Элемент выбора файла
- 116 3.2.1. Загрузка нескольких файлов
- 119 3.2.2. Как запретить ввод имени файла
- 119 3.2.3. Проверка типа файла
- 119 3.2.4. Можно ли задать фильтр для выбираемых файлов
- 120 3.2.5. Одновременная загрузка нескольких файлов с отображением процесса
- 120 Вариант 1
- 120 Вариант 2
- 120 Вариант 3
- 121 3.3. Элемент управления Label
- 121 3.3.1. Как отобразить текст по вертикали
- 121 3.3.2. Как изменить текст через JavaScript
- 121 3.3.3. Как отобразить текст в несколько строк
- 121 3.4. Элемент управления CheckBoxList
- 121 3.4.1. Выбрать все отмеченные элементы
- 121 3.4.2. Проверить, что ничего не выбрано
- 122 3.5. Элемент управления TreeView
- 122 3.5.1. Ограничение по ширине
- 122 3.5.2. Дерево отображается некорректно
- 122 3.6. Элементы управления ListView и ListBox
- 122 3.6.1. Почему свойство SelectedItem равно null
- 123 3.6.2. Улучшения ListView в ASP.NET 4.0
- 123 3.6.3. Скроллируемый ListBox
- 124 3.7. Элемент управления TextBox
- 124 3.7.1. Запрет ввода формы по клавише
- 124 3.7.2. Указание максимальной длины TextBox для полей ввода
- 126 3.7.3. Подсказка ввода в TextBox
- 127 3.7.4. Выравнивание текста
- 128 3.7.5. Проверка введения корректной даты
- 128 3.8. Отображение графических карт
- 129 3.9. Элемент управления GridView
- 129 3.9.1. Общие вопросы
- 129 А где DataGrid?
- 129 Добавление прокрутки
- 130 3.9.2. Привязка данных
- 130 Чем свойство DataSource отличается от DataSourceId
- 130 Привязка данных с помощью свойства DataSource
- 131 Привязка данных с помощью свойства DataSourceId
- 132 Форматирование данных при привязке
- 132 3.9.3. Колонки GridView
- 132 Автоматическая генерация колонок
- 132 Декларативное добавление колонок
- 133 Программное добавление колонок
- 133 Проблемы форматирования колонок
- 133 Колонки операций
- 135 Несколько кнопок в одной колонке
- 135 Подтверждение выполнения операции
- 135 Как отобразить картинку
- 136 Как отобразить и заголовок и картинку
- 136 3.9.4. Строки GridView
- 136 Получение номера строки в GridView
- 137 Подсветка строк при наведении курсора мыши
- 138 Удаление строки
- 139 Редактирование строк
- 139 Добавление строк
- 139 Подтверждение при удалении строки
- 141 3.9.5. Сортировка GridView (MS SQL)
- 142 3.9.6. Уменьшение размера ViewState
- 142 3.9.7. Событие выбора строк
- 147 3.9.8. Экспорт в Excel
- 148 3.9.9. Сортировка по нескольким столбцам
- 129 3.9.1. Общие вопросы
- 148 3.10. Элемент управления Repeater
- 148 3.10.1. Привязка списка объектов
- 150 3.10.2. Привязка списка строк
- 150 3.10.3. Вложенные Repeater
- 152 3.10.4. Операции с элементами Repeater
- 152 3.10.5. Цветные строки в Repeater
- 153 3.11. Календарь (Calendar)
- 153 3.11.1. Отображение расписания с помощью элемента Calendar
- 157 3.11.2. Валидация данных календаря
- 157 3.12. Реализация закладок (TabControl)
- 160 3.13. Кнопки
- 160 3.13.1. Изображение для запрещенной кнопки с картинкой
- 161 3.13.2. Задание кнопки по умолчанию
- 161 3.13.3. Как отключить у кнопки валидацию формы
- 161 3.13.4. Как задать клиентский обработчик кнопки
- 161 3.13.5. Как перейти на другую страницу после возврата страницы
- 161 3.13.6. Почему не вызывается метод Click у кнопки
- 162 3.13.7. Кнопка закрытия окна браузера
- 162 3.13.8. Запрет кнопки на время длительной операции
- 163 3.14. Отображение рекламных объявлений
- 109 3.1. Общие вопросы элементов управления
- 165 Глава 4. Валидация
- 165 4.1. Варианты валидации
- 166 4.1.1. Обязательные поля
- 166 4.1.2. Проверка диапазона данных
- 166 4.1.3. Проверка формата данных
- 167 Примеры регулярных выражений
- 169 4.1.4. Сравнение значений
- 169 4.1.5. Сравнение дат календарей
- 171 4.1.6. Пользовательские процедуры валидации
- 172 4.1.7. Отображение итоговой информации о валидации
- 173 4.2. Установка фокуса на ошибку
- 174 4.3. Элементы, не вызывающие валидацию
- 174 4.4. Валидация групп полей
- 175 4.5. Проблемы валидации данных
- 175 4.5.1. Слишком строгие правила
- 175 4.5.2. Проблема кодировок
- 176 4.5.3. Валидация буквы е
- 176 4.5.4. Только клиентская валидация
- 177 4.6. Валидация переключателей (CheckBox)
- 178 4.7. Валидация чисел с плавающей точкой
- 178 4.8. Валидация перед переходом на другую страницу
- 179 4.9. Валидация без использования стандартных валидаторов
- 180 4.10. Клиентская валидация с помощью веб-методов
- 165 4.1. Варианты валидации
- 184 Глава 5. Отладка, тестирование, обработка исключений и ошибок
- 184 5.1. Проверка на запуск в отладочном режиме
- 184 5.2. Правила разработки для облегчения тестирования сайтов
- 185 5.2.1. Режим отладки
- 185 5.2.2. Тестирование при Windows-имперсонации
- 185 5.2.3. Тестирование рабочего процесса, зависящего от времени
- 186 5.2.4. Тестирование почтовой рассылки
- 187 5.3. Общие правила обработки исключений
- 187 5.3.1. «Не глотайте» исключения молча
- 187 5.3.2. Не обрабатывайте те исключения, которые не должны быть обработаны в данный момент
- 188 5.3.3. Обходитесь без исключений, если это возможно
- 188 5.3.4. Сообщайте информацию о коде с помощью исключений
- 189 5.3.5. Не пересоздавайте исключения заново
- 190 5.3.6. Не давайте пользователю приложения лишнюю информацию об исключениях
- 190 5.3.7. Используйте исключения, а не коды ошибок
- 192 5.3.8. Используйте иерархию исключений
- 193 5.4. Обработка ошибок в параметрах URL
- 194 5.5. Отладочная информация (трассировка) для ASP.NET
- 195 5.6. Оценка времени выполнения кода
- 195 5.6.1. Измерение с помощью TickCount (наименьшая точность)
- 195 5.6.2. Измерение с помощью Ticks (средняя точность)
- 195 5.6.3. Измерение с помощью QueryPerformance (высокая точность)
- 196 5.6.4. Измерение с помощью класса Stopwatch (C# 2.0)
- 196 5.7. Вывод сообщений в окно Output среды
- 196 5.8. Запись в Application Log
- 197 5.9. Создание своего Event Log
- 199 5.10. Обработка исключений на странице
- 199 5.11. Глобальная обработка исключений ASP.NET
- 199 5.11.1. Обработка через HTTP-модуль (IHttpModule)
- 201 5.11.2. Обработка через web.config
- 201 5.11.3. Обработка с помощью монитора здоровья
- 202 5.11.4. Обработка с помощью библиотеки ELMAH
- 203 5.12. Обнаружение причины перезагрузки сайта
- 203 5.13. Отключение перезагрузки сайта при изменениях в каталогах
- 204 5.14. Исключение при перенаправлении на другую страницу
- 205 5.15. Тестирование веб-страниц без веб-сервера
- 205 5.16. Отладка JS-кода
- 206 5.17. Сохранение запроса
- 207 Глава 6. Конфигурирование и конфигурационные файлы
- 207 6.1. Конфигурационный файл web.config
- 207 6.1.1. Общие сведения о web.config
- 208 6.1.2. Где найти класс ConfigurationManager
- 208 6.1.3. Можно ли в web.config использовать символы и т. п
- 208 6.1.4. Шифрование секций web.config
- 208 6.1.5. Шифрование строки подключения
- 208 6.1.6. Вынесение секции параметров во внешний файл
- 209 6.1.7. Вынесение секций во внешний файл
- 209 6.1.8. Нестандартный конфигурационный файл
- 215 6.1.9. Изменение web.config
- 216 6.1.10. Отключение модулей в web.config
- 217 6.2. Где хранить строку подключения к БД
- 218 6.3. Управление виртуальными директориями IIS
- 222 6.4. Шифрование с помощью DPAPI
- 223 6.5. Хранение паролей в памяти
- 224 6.6. Хранение паролей в файле конфигурации
- 207 6.1. Конфигурационный файл web.config
- 226 Глава 7. Производительность
- 226 7.1. Не кэшируйте соединение с БД
- 227 7.2. Получение статистики о соединении с БД
- 227 7.3. Используйте DataReader для последовательного доступа к данным
- 228 7.4. Используйте хранимые процедуры
- 228 7.5. Управление буферизацией страниц
- 228 7.6. Используйте отдельные JS- и CSS-файлы
- 228 7.7. Отключайте режим отладки
- 229 7.8. Управление кэшированием страниц
- 230 7.8.1. Атрибут Location
- 230 7.8.2. Атрибут Duration
- 230 7.8.3. Атрибут VaryByParam
- 231 7.8.4. Атрибут VaryByControl
- 232 7.8.5. Атрибут VaryByHeader
- 232 7.8.6. Атрибут VaryByCustom
- 234 7.8.7. Использование класса HttpCachePolicy
- 235 7.8.8. Очистка кэша
- 236 7.8.9. Ограничения кэширования
- 236 7.9. Частичное кэширование
- 236 7.9.1. Кэширование элементов управления
- 236 7.9.2. Подстановка вне кэша
- 237 7.10. Создание статического кэша
- 239 7.11. Кэширование в ASP.NET 4.0
- 240 7.12. Использование кэша ASP.NET
- 240 7.12.1. Чем Cache отличается от Application
- 240 7.12.2. Добавление элементов в кэш
- 241 Простое добавление в кэш
- 241 Задание абсолютного времени устаревания
- 241 Задание скользящего времени устаревания
- 241 Задание зависимостей от другого элемента кэша
- 242 Задание зависимостей от файла или папки
- 242 Задание времени начала контроля зависимостей
- 243 Задание приоритетов освобождения
- 243 Обращение к элементам кэша
- 244 Глава 8. Работа с URL
- 244 8.1. Получение «чистого» пути к странице
- 244 8.2. Получение «чистого» пути к приложению
- 245 8.3. Чем URL отличается от URI
- 245 8.4. Разбор URL на составляющие
- 246 8.5. Преобразование относительного пути в абсолютный
- 246 8.6. Проверка использования защищенного протокола
- 247 8.7. Перенаправление на другую страницу
- 247 8.7.1. Постоянное перенаправление (код 301)
- 247 8.7.2. Перенаправление через определенный интервал времени
- 248 8.7.3. Чем Server.Transfer отличается от Response.Redirect
- 249 Ошибка «View State Is Invalid
- 249 Почему Server.Transfer(«page.html») дает пустую страницу?
- 249 Как распознать Response.Redirect и Server.Transfer
- 249 Выбор между Response.Redirect и Server.Transfer
- 250 8.7.4. Чем Server.Execute отличается от Server.Transfer?
- 250 8.7.5. Сравниваем Server.Transfer, Server.Execute и Response.Redirect
- 251 Вызываем Response.Redirect
- 251 Вызываем Server.Transfer
- 252 Вызываем Server.Execute
- 252 8.8. Управление созданием HTTP-обработчиков (IHttpHandler)
- 254 8.9. Можно ли задать расширение в диалоге выбора файла
- 254 8.10. Отобразить значок состояния ICQ-пользователя
- 254 8.11. Отобразить значок состояния Skype-пользователя
- 254 8.12. Получение относительного пути
- 255 8.13. Оптимизация ссылок (URL Rewriting)
- 256 8.13.1. Использование свойства PathInfo
- 257 8.13.2. Использование метода RewritePath
- 258 8.13.3. Использование IIS7
- 258 8.13.4. Использование web.config
- 259 8.13.5. Ссылки на картинки, скрипты и др.
- 259 8.13.6. Сравнение вариантов перезаписи ссылок
- 261 Глава 9. Пользователи, имперсонация, авторизация
- 261 9.1. Получение имени текущего пользователя
- 261 9.2. Программная имперсонация
- 263 9.3. Как получить IP-адрес клиента, открывшего сайт
- 264 9.4. Как получить культуру клиента, открывшего сайт
- 264 9.5. Как получить список групп домена, в которые входит пользователь
- 265 9.6. Сохранение данных пользователя и реализация IPrincipal
- 276 Глава 10. Библиотека JQuery
- 276 10.1. Базовые операции
- 276 10.1.1. Подключение библиотеки
- 276 10.1.2. Обработка событий страницы
- 277 10.1.3. Выбор элементов страницы
- 277 Обращение по клиентскому идентификатору
- 277 Выбор элементов по типу
- 277 Выбор элементов по классу
- 278 Специальные символы в идентификаторах
- 278 Выбор элемента в иерархии
- 278 Выбор дочерних элементов
- 278 Выбор элементов по атрибуту
- 278 Примеры
- 279 10.1.4. Проверка существования элемента
- 280 10.1.5. Метод click
- 280 10.1.6. Перебор элементов
- 280 10.1.7. Отмена стандартного обработчика
- 281 10.1.8. Обработка возврата формы (submit)
- 281 10.1.9. Генерация возврата формы (submit)
- 281 10.1.10. Проверка принадлежности
- 282 10.1.11. Установка и удаление атрибутов элементов
- 282 10.1.12. Загрузка данных из XML-файла
- 283 Проблема в браузере IE
- 284 10.1.13. Чем html() отличается от text()
- 284 10.2. Элементы управления
- 284 10.2.1. Разрешение и запрещение элементов
- 284 10.2.2. Отметка опции (checkbox)
- 285 10.2.3. Получение выбранного элемента выпадающего списка
- 285 10.2.4. Получение выбранного переключателя (radiobutton)
- 285 10.2.5. Изменение атрибутов при подведении курсора
- 286 10.3. Плагины
- 286 10.3.1. Таблица jqGrid
- 287 10.3.2. Графики jqPlot
- 288 10.3.3. Преобразование таблиц в графики
- 288 10.3.4. Таблица tablesorter
- 289 10.3.5. Сортировка таблиц перетаскиванием
- 289 10.3.6. HTML-редакторы текста
- 289 10.3.7. Подсказки qTip
- 289 10.3.8. Подсказки Easy Tooltip
- 290 10.3.9. Кнопки рейтинга
- 290 10.3.10. Загрузка файлов
- 290 10.3.11. Обрезка изображений
- 290 10.3.12. Меню в стиле MS Office
- 291 10.3.13. Ненавязчивые окна jGrow
- 291 10.3.14. Всплывающие подсказки BeautyTips
- 291 10.3.15. Меню в стиле Apple Mac
- 292 10.3.16. Карусель MovingBoxes
- 292 10.3.17. Меню Garage Door
- 293 10.3.18. Подключение Google Maps
- 293 10.3.19. Модуль валидации полей
- 293 10.3.20. Вращение предметов
- 293 10.4. JQuery CDN
- 276 10.1. Базовые операции
- 295 Глава 11. Получение данных из Интернета
- 295 11.1. Получение файла из Интернета
- 296 11.2. Получение любых данных из Интернета
- 296 11.3. Получение веб-страницы
- 297 11.4. Использование прокси-сервера
- 297 11.5. Получить текущий курс валюты
- 297 11.6. Создание простого RSS-канала
- 301 11.7. AJAX
- 301 11.7.1. Что такое AJAX?
- 308 11.7.2. Получение серверных данных без AJAX
- 311 11.7.3. Вывод сообщений с помощью UpdatePanel
- 313 11.7.4. Вызов серверного метода с помощью AJAX
- 316 Глава 12. Базы данных, привязка данных
- 316 12.1. Привязка данных
- 316 12.1.1. Сложная привязка данных с помощью DataBinder
- 317 12.1.2. Зависимая привязка данных
- 318 12.1.3. Привязка XML-данных
- 320 12.1.4. Привязка списка данных к выпадающему списку
- 321 12.1.5. Привязка перечислений (enum)
- 322 Добавление дополнительных элементов
- 322 Расширенная привязка перечислений
- 324 Вычисление имен значений перечисления
- 326 12.1.6. Привязка данных Access
- 326 12.1.7. Привязка данных к списку
- 327 12.1.8. Привязка данных с помощью LINQ
- 328 12.1.9. Привязка данных с разбивкой на страницы
- 331 12.2. Передача списка в SQL
- 332 12.3. Создание ссылки на файл, сохраненный в БД
- 333 12.3.1. Код обработчика
- 334 12.3.2. Регистрация обработчика
- 335 12.3.3. Код обработчика (второй вариант)
- 336 12.3.4. Структура БД для хранения файлов
- 336 12.3.5. Базовые классы
- 338 12.3.6. Загрузка файлов в БД
- 340 12.3.7. Получение файлов из БД
- 342 12.3.8. Создание ссылки на файл в БД
- 344 12.3.9. Типы файлов
- 344 12.3.10. Определение типа файла по расширению
- 345 12.3.11. Список поддерживаемых браузером типов
- 346 12.3.12. Регистрация своего расширения файла
- 346 12.3.13. Определить формат файла
- 348 12.3.14. Можно ли использовать в имени файла русские буквы?
- 348 12.3.15. Указание размера файла
- 348 12.3.16. Некоторые ограничения
- 349 12.4. Что следует использовать для закрытия соединения — Close или Dispose?
- 349 12.5. Получение индекса объекта после добавления его в таблицу MS SQL
- 316 12.1. Привязка данных
- 350 Глава 13. Сессия, куки и хранение данных
- 350 13.1. Как программно завершить сессию
- 350 13.2. Сообщение о завершении сессии
- 351 13.3. Сжатие данных в сессии (ASP.NET 4.0)
- 351 13.4. Отображение окна сообщения о завершении сесии
- 352 13.5. Непредсказуемое поведение сессии
- 352 13.6. Почему не вызывается Session_End
- 352 13.7. Подсчет числа посетителей сайта
- 356 13.8. Как получить доступ к сессии обычного класса
- 356 13.9. Как получить доступ к сессии из HttpHandler
- 356 13.10. Использование cookies
- 357 13.11. Что плохого в использовании сессий?
- 358 13.12. Настройка хранения сессий
- 359 13.13. Создание общей сессии между ASP- и ASP.NET-приложениями
- 359 13.14. Как не допустить закрытия сессии
- 361 13.15. Передача между страницами значений серверного элемента управления
- 363 13.16. Как перехватить загрузку и сохранение ViewState
- 363 13.17. Управление размером ViewState
- 364 13.18. Сжатие ViewState
- 366 13.19. Хранение ViewState на сервере
- 367 13.20. Управление ViewState в ASP.NET 4.0
- 368 Глава 14. Защита данных
- 368 14.1. Шифрование конфигурации
- 368 14.1.1. Шифрование строки подключения
- 369 14.1.2. Шифрование секций web.config
- 370 14.1.3. Программное шифрование секций web.config
- 370 14.2. «Зашитые» пароли
- 370 14.3. Защита от внедрения в SQL (SQL Injection)
- 373 14.4. Защита от внедрения в XML (XML Injection)
- 373 14.5. Защита от внедрения в строки запуска (DOS Injection)
- 374 14.6. Защита от внедрения кода в HTML (XSS)
- 376 14.6.1. Проверка подверженности сайта XSS
- 376 14.6.2. Защита от XSS
- 376 14.6.3. Защита от XSS в ASP.NET 2.0
- 376 14.6.4. Библиотека Microsoft AntiXss
- 377 14.7. Ошибки в алгоритмах
- 377 14.8. Защита от разглашения информации
- 377 14.8.1. Забытые комментарии
- 377 14.8.2. Сообщения об ошибках
- 378 14.8.3. Трассировка
- 378 14.9. Защита паролей, хранящихся в БД
- 379 14.10. Защита от отказа в обслуживании (DOS)
- 380 14.11. Защита от перебора данных
- 380 14.11.1. Слабые пароли
- 380 14.11.2. Пароли по умолчанию
- 381 14.11.3. Блокировка подбора
- 381 14.11.4. Замедление проверок
- 381 14.11.5. Время жизни пароля
- 382 14.11.6. Очевидные ответы
- 382 14.12. Пассивная защита
- 382 14.13. Отсутствие автозакрытия сессии
- 383 14.14. Защита от перебора параметров
- 383 14.15. Защита файлов ресурсов
- 384 14.16. Защита ссылок
- 385 14.17. Создание CAPTCHA
- 401 14.18. Защита без CAPTCHA
- 368 14.1. Шифрование конфигурации
- 403 Глава 15. Данные и отчеты MS Excel для веб-приложений
- 403 15.1. Способы взаимодействия с MS Excel
- 404 15.1.1. Использование библиотеки MS Excel
- 405 15.1.2. Формат CSV
- 406 15.1.3. Формат HTML
- 406 15.1.4. Формат XML
- 406 15.1.5. Использование OLE DB-провайдера
- 406 15.1.6. Формат Office 2008
- 407 15.1.7. Бесплатные библиотеки
- 407 15.1.8. Платные библиотеки
- 407 15.2. Лицензионные ограничения MS Excel
- 408 15.3. Библиотека MS Excel
- 408 15.3.1. Раннее и позднее связывание
- 408 15.3.2. Сборки взаимодействия
- 410 15.3.3. Объектная модель Excel
- 411 Как найти нужные объекты
- 412 15.3.4. Раннее связывание
- 418 15.3.5. Позднее связывание
- 423 Как определять значения констант
- 424 15.3.6. Создание шаблона отчета
- 428 15.3.7. Быстрая вставка данных
- 429 15.4. Excel CSV, HTML и XML
- 429 15.4.1. Формат Excel/CSV
- 432 15.4.2. Формат Excel/HTML
- 435 15.4.3. Формат Excel/XML
- 443 15.4.4. Объединенный формат HTML и XML
- 445 15.4.5. Генерация Excel-документов в ASP.NET
- 451 15.5. Использование OLE DB
- 451 15.5.1. OLE DB-провайдер
- 460 15.5.2. OLE DB для платформы x64
- 460 15.6. Формирование файлов в формате Excel 2008
- 460 15.6.1. Кратко о формате Office 2008
- 462 15.6.2. Распаковка документа
- 464 15.6.3. Создание документа
- 468 15.6.4. Запись данных в документ
- 473 15.6.5. Использование блоков кода Microsoft
- 477 15.6.6. Использование утилиты DocumentReflector
- 478 15.6.7. Использование утилиты OpenXmlDiff
- 479 15.6.8. Описание констант MS Office 2008
- 403 15.1. Способы взаимодействия с MS Excel
- 480 Глава 16. Инструменты и библиотеки
- 480 16.1. Инструменты
- 480 16.1.1. Fiddler
- 481 16.1.2. Firebug
- 482 16.1.3. YSlow
- 482 16.1.4. Wireshark
- 484 16.1.5. SQL Server Profiler
- 484 16.1.6. Анализатор ссылок Xenu
- 485 16.1.7. HttpWatch
- 485 16.1.8. Отладчик Web Development Helper
- 485 16.1.9. Internet Explorer Developer Toolbar
- 486 16.1.10. Сайт Site-Perf
- 487 16.1.11. Doloto
- 487 16.1.12. Редактор IxEdit
- 488 16.1.13. jQueryPad
- 489 16.1.14. CSS-утилиты
- 489 16.1.15. UrlScan
- 489 16.1.16. Microsoft Ajax Minifier
- 490 16.2. Редакторы HTML-текста
- 490 16.2.1. CKEditor
- 490 16.2.2. Damn Small Rich Text Editor
- 491 16.2.3. TinyMCE
- 491 16.2.4. WYMeditor
- 491 16.2.5. widgEditor
- 492 16.2.6. jwysiwyg
- 492 16.2.7. NicEdit
- 493 16.2.8. Whizzywig
- 493 16.2.9. Yahoo!
- 493 16.2.10. markItUp!
- 494 16.2.11. elRTE
- 494 16.3. Архиваторы
- 494 16.3.1. Библиотека SharpZipLib
- 495 16.3.2. Библиотека CAKE3
- 495 16.4. Таблицы
- 495 16.4.1. Плагины jQuery
- 495 16.4.2. Таблица AjaxDataControl
- 496 16.5. Графики и диаграммы
- 496 16.5.1. Плагины jQuery
- 496 16.5.2. Графики и диаграммы MS Chart
- 497 16.5.3. Графики Google Chart
- 499 16.6. Разное
- 499 16.6.1. Библиотека Google Gears
- 499 16.6.2. CDN-сервисы
- 480 16.1. Инструменты
- 501 Приложение. Содержимое компакт-диска
- 504 Предметный указатель
Инструкция как скачать книгу Павел Агуров: ASP.NET. Сборник рецептов (+ CD-ROM) в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.