Русскоязычный видео курс по основам языка C# и технологиям .NET. Рассматриваются теоретические основы и их практическое применение на примере создания
ASP.NET приложений
ASP.NET введение в технологию
на языке C#.
Разработка и использование WebServices
Основы языка C# и платформы .NET.
Более 65 видеоуроков об использовании
технологии ASP.NET и реализации вебсервисов.
Каждый день в сети internet
появляется огромное количество новых сайтов и вебсервисов, ориентированных на
клиент-серверное взаимодействие
Вебсайтом может стать обычная страничка в сети, или же крупнейший
портал, посещаемостью в несколько сотен тысяч пользователей в сутки.
Не удивительно, что для создания
вебресурсов существует немало различных технологий и самих языков, таких как
php, perl, python, ruby. Все они существуют конкретно для создания вебпроектов.
Среди прочего отдельной главой
выделяется технология ASP.NET, сохранившая в своей основе привычки разработки
клиентских приложений, но с разделением между программистами и верстальщиками,
реализовывая тем самым классический ООП

Серия видеокурсов по технологии .NET и языку C#.
Часть III.
ASP.NET введение в технологию. WebServices
Часть 4. Рефлексия и многопоточность
Часть I. WindowsForms
Часть II.
ADO.NET и основы SQL запросов
XML/TXT в аспекте ADO.NET
http://skillcoding.com
Наконец-то мы готовы для того, что бы взяться за желанную всеми
технологию ASP.NET. Мы прошли предварительную подготовку по синтаксису самого
c#, разрабатывали различного типа и направления клиентские десктопные
приложения, создавали базы данных SQL-Server и на основе обычных локальных txt и
xml файлов.
И теперь все эти знания и практический опыт мы с легкостью переносим в веб
технологию ASP.NET.
Очевидным становится явное преимущество первостепенного изучения WindowsForms
перед знакомством с ASP.NET: времени потребовалось на долю больше, а эффект
вырос в разы - одним ударом несколько технологий. Это же .NET!!!
"Начинать изучать ASP.NET следует с WindowsForms".
Я полностью согласен с этими словами. Те, кто сходу, без подготовки, брались
овладевать технологией ASP.NET, не достигли внятных результатов быстрее тех, кто
сперва штудировал WindowsForms.
Зато остальные за тот же срок охватили не только вебразработку, но и настольную, оказавшись в самом льготном положении на рынке труда!
Но, к чему весь этот разговор? А к тому, что вывод один:
Что бы мы не разрабатывали, мы практически не почувствуем болезненной разницы в реализации технологий, ведь всегда мы работаем с c# под платформу .NET. И сторонние технологии нас не касаются - все реализовано в .NET
А как же клиентский JavaScript? Без него сегодня никак!.
Да, JavaScript знать полезно. Скриптовый язык очень замечательный. Но и здесь, ASP.NET львинную долю работы выполняет за нас, автоматически генерируя кроссбраузерный JavaScript и разметку html для готовых .NET компонентов, экономя время разработки в несколько десятков раз!!!
Думаю, нет больше надобности расписывать преимущества ASP.NET перед всеми остальными тьехнологиями, Вы это все знаете и без меня. Поэтому перейдем непосредственно к главному вопросу об изучении данной технологии.
ПРОФЕССИОНАЛЬНАЯ ПОДГОТОВКА РАЗРАБОТЧИКА
по языку C# на платформе .NET.
Часть
3 ASP.NET и работа с WebServices
Курс посвящен теоретическим фундаментальным основам разработки вебпроектов на
ASP.NET, а также практической реализации и использования вебсервисов.
Более 65 видео уроков по ASP.NET на актуальные в среде разработчиков темы.
ПРОФЕССИОНАЛЬНАЯ ПОДГОТОВКА РАЗРАБОТЧИКА
по языку C# на платформе .NET.
Часть
3 ASP.NET и работа с WebServices
Так выглядит основное меню курса по ASP.NET технологии
Главное меню.
Что есть на диске?
Теперь рассмотрим, какие уроки включены в каждый раздел, и какие знания Вы получите,
изучив их.
Введение
(управление html разметкой в ASP.NET)
Управление html разметкой в ASP.NET
Урок 1, 2
- Напоминание html разметки простейшей страницы
- Создание шаблона страницы с заголовком
- Вывод текста на экран браузера
- Форматирование текста с помощью тегов
- Вставка функций JavaScript в заголовке разметки
- Ключевой тег script
- Подписка тега html на имеющийся код JavaScript на странице. onload событие
- Альтернатива подключению внешнего кода JavaScript
- Другой вариант указания коротких функций клиентских скриптов непосредственно в самом блоке тега html
- Что такое браузер и чем отличается/не отличается от обычного клиентского приложения
- Визуализация в окне браузера текстовой разметки html
- Сервер и клиент - хостинг сервера и браузер клиента. В чем ключевая особенность загрузки html разметки в клиентский браузер
- Серверные оригиналы и клиентские копии вебстраниц
Урок 3, 4
- Стили настройки внешнего вида и поведения содержимого html тегов
- Демонстрация применения теговых стилей
- Создание первого web сайта в среде Visual Studio
- Файлы Default.aspx, Default.aspx.cs, web.config
- Начальный код и разметка данных файлов
- Разбор всех asp-тегов, присутствующих на странице
- Теги для непосредственного внедрения испоняемого кода c# в разметку html
- Директива Page и её параметры
- Базовый класс System.Web.UI.Page
- Назначение свойства runat="server" и как на него реагирует исполняемая среда .NET
- Тег form. Главное правило по количеству тега form на странице
- Варианты запуска серверной страницы .aspx из среды VisualStudio
- Открываем готовую страницу в браузере и анализируем полученную html разметку. Выявляем ключевые различия asp-html-разметки на сервере от готовой html-разметки на клиенте
- Понимаем назнаяение записи runat="server" для рендеринга html-представления тегов на клиенте автоматически
- Удалив свойство runat для тега form мы получаем разметку "как есть" и без тега div для ViewState
- Обзор стандартных html контролов-тегов в панеле инструментов
- Html контролы, html-generic контролы и серверные asp контролы
Урок 5, 6
- Правила оформления серверного контрола на примере asp:Label
- Контролы в панеле инструментов представляют собой тот, или иной тип, класс
- asp:Label представляется на клиенте в виде тега span
- Понимаем, что в разметке в режиме разработки вставляя контролы со свойством runat, мы вставляем объекты определенного типа - экземпляры класса контрола. И на клиенте получаем соответствующую html разметку, которой представляется данный объект данного типа
- Настройка доступных параметров тега asp:Label в качестве public свойств класса
- Параметры серверных контролов зачастую представлены пакраметром style html тега представления контрола
- Альтернативный способ настройки в указании свойства CssClass серверного контрола
- Настройка контрола из беккода непосредственно с помощью c#
- Применение элемента runat к обычному html тегу div. Доступ к этому тегу и его открытых свойств из беккода и анализ выходной его html разметки
- Ключевые отличия в наборе свойств доступа и настройки серверного контрола и обычного html-тега (HtmlGenericControl - общий тип html тегов)
- Свойство-индексатор Attributes для объекта HtmlGenericControl поможет выйти из ситуации отсутствия требуемых свойств контрола
- Главная потенциальная ошибка, которую запросто можно допустить при настройке контролов с помощью расширения коллекции Attributes
- Понимание преимуществ объектного подхода в работе с разметкой и серверными контролами в беккоде
- Продвигаемся в углублении понимания принципов построения и функционирования, доступа и настройки, а также представления на клиенте в виде html разметкой обычных тегов html и серверных контролов
Урок 7
- Генерирование кода CSS из беккода на c# для переопределения html тегов
- Класс Style для указания объекта стиля блоков div
- Настройка открытых свойств экземпляра стиля
- Привязка объекта Style в хедере разметки html
- Доступ к блоку head по его id
- Метод StyleSheet.CreateStyleRule для привязки только что созданного стиля
- Иной метод доступа к HtmlHead хедеру страницы по свойству Page.Header
- Когда следует применять рассмотренный способ добавления стилей CSS на страницу?
Урок 8
- Использование класса HtmlLink для указания ссылки на внешний файл каскадных таблиц стилей CSS
- Создание тестового файла CSS
- Задание свойства HtmlLink.Href
- Привязка объекта стиля к хедеру через свойство Page.Header.Controls
- Донастраиваем соответствующие свойства через свойство Attributes
- Обобщение известных на данный момент способов доступа и настройки серверных контролов
Урок 9
- Еще раз о серверных контролах
- Что лучше6 серверный многофункциональный, или стандартный html тег?
- Демонстрация серверного окнтрола на примере asp:Calendar
- Анализ выходной html разметки контрола Calendar
- Польза объектного подхода через увеличение времени загрузки страницы
- Настройка внешнего вида серверного контрола одним нажатием мышки
Урок 10, 11
- Еще один чудной, но всегда действенный способ внедрения любой разметки html в исходный документ
- Настройка контрола asp:Label из беккода c#
- Добавляем в разметку тег переключателя <input type="radio" />
- А теперь добавляем в разметку этот полный тег путем настройки из кода c# свойств нашего контрола asp:Label, получив radiobutton через asp:Label
- Анализ полученной выходной html разметки
- Класс HttpContext и его известній метод Current.Response.Write
- Вывод данных непосредственно в выходной поток ответа сервера на клиентский запрос с помощью метода Response.Write
- Генерирования html разметки методом Response.Write
- Проблемы бездумного использования метода Write для вывода html разметки
- Вставка метода Response.Write непосредственно в коде разметки, не в беккоде
- Сокращенный вариант Response.Write в разметке
- Генерирование html тегов в беккоде c#, а подтягивание этих данных через Response.Write непосредственно в разметке
- Гибкость последнего подхода - объектность применения
- Модификаторы видимости в данном случае
Урок 12
- Долго-долго разбираем процесс подачи запроса на сервер и получения ответа
- Опять останавливаемся на ключевых моментах многопользовательских запросов сервера
- Процесс создания страницы в ответ на запрос с клиента
- Удаление из памяти отработанной страницы
- Регенерация вебстраниц при повторных запросах их с клиента
- Статические поля классов Page
- Статическое поле - заменитель данных приложения Application
- Статические переменные не принадлежат одному ответу на клиент, а используется одновроеменно всеми "подключенными" клиентами
Урок 13
- Аналогии дочерних контролов из WindowsForms
- Работа с контролом asp:Panel - в каких случаях целесообразно использовать
- Представление html разметкой на клиенте контрола asp:Panel
- div и Panel - что лучше?
- Добавляем на форму TextBox и Button
- Подписываем кнопку на событие Click
- Изменение контролов выходной разметки в обработчике события нажатия на кнопке
- Очередность возникновения событий контролов и формы
- Момент вызова метода Page_Load и Button_Click
- Процесс отправки данных на сервер и получение ответа
Урок 14, 15
- Понятие ViewState
- Изменяем выходную html разметку на этапе Page_Load, а не Button_Click
- Добавляем в разметку еще кнопку asp:Button для обычной перегрузки страницы
- Почему же при перегрузке страницы не подписанной на событие кнопкой состояние страницы сохраняется?
- asp:Label продолжает хранить свое состояние - поведение по умолчанию серверного окнтрола с помощью передачи данных состояния
- Еще раз о принципе подачи запросов на сервер и начала жизни страницы
- Где содержатся данные ViewState, когда генерируются и как используются на сервере?
- Сохраняется ли ViewState при обычной перегрузке страницы?
- Почему в некоторых случаях целесообразно отключить ViewState для некоторых контролов?
- Правила сохранения/удаления данных ViewState для контролов уже посещенной ранее странице
- Одновременное управление режимом сохранения ViewState для всех контролов на странице
Урок 16
- Почему не следует использовать динамически добавляемые контролы?
- Динамическое добавление контрола TextBox на форму с помощью c#
- Контрол asp:TextBox непосредственно через экземпляр типа TextBox
- Попытка получения данных с динамически добавленного текстового поля
- Метод поиска контролов FindControl
- Проблемма сохранения состояния динамически добавляемых контролов
- Управление объектами ViewState - доступ и редактирование
Урок 17
- Попытки динамического добавления одного и того же окнтрола в несколько родительских контролов
- Понятие дерева контролов
- Передача данных в пределах одной страницы
- Передача данных от одной страницы к другой
- Объект Respons и метод Redirect - первый способ межстраничной передачи данных
- Варианты обращения ко второй страницы из первой
- Важный ключевой момент относительно сервера при ссылочной загрузке страницы
- Гиперссылка и объекты ViewState
- Серверный контрол asp:HyperLink
- Добавление требуемых параметров при редиректе на другую страницу
- История вызовов событий предыдущей и последующей страниц
- Объект Request - запрос на сервер
- Вытягиваем параметры строки адреса через перегруженный индексатор QueryString
- Получение всех параметров страницы, не только из строки адреса
Урок 18
- Метод Server.Transfer для загрузки второй страницы
- Главное различие метода Server.Transfer от Respons.Redirect
- Свойство PreviosPage для получения контролов предыдущей страницы на данной
- Роль клиентского браузера в выполнении метода Server.Transfer
- Преимущества данного метода Transfer для перехода на иную страницу с данной
- Передача параметров через Server.Transfer
- Альтернатива межстраничной отправки данных PostBackUrl
- Анализ истории вызовов для PostBsckUrl - важнейшие моменты
Урок 19, 20
- Еще один вариант на основе явного приведения объекта PreviosPage
- Быстро и просто решаем проблему доступа к private контролу страницы
- Еще один замечательный способ - использование объекта HttpHandler Context.Handler
- Редирект на внешние ресурсы с помощью Response.Redirect и Server.Transfer
- Понятие сессий, сеанса взаимодействия пользователя с сайтом
- Принципы функционирования объектов сессий
- Передача данных между страницами с помощью управления объектами сессии
- Тип Session, доступ и редактирование
- Правильная проверка условия существования объекта сессии
- Корзина покупок на основе сессий
- Уникальность сессий для различных пользователей - удобство для управления сессиями пользователей
- Эмулятор работы вебмагазина с корзиной покупок на простейшем примере. Создаем новый класс Bag
Урок 21, 22
- static value как уровень приложения
- Session и Application - отличия в работе
- Получение на странице общего количества заказов, проведенными пользователями в течение последней сессии
- Коллекция общих данных уровня приложения Application
- Момент удаления объекта Application
- Объект HttpApplicationState, SessionState
- Несколько слов о принципе работы клиентских куки
- Сохраняем cookie на машине пользователя. Класс HttpCookie
- Использование свойства Response.Cookies для добавления временного куки-файла
- Получение cookie при запросе сервера с клиента
- Настройка времени жизни для куки - "куки-долгожители"
Урок 23, 24
- Жизненный цикл страницы
- Событие PreInit - создание элементов управления на странице
- Первостепенность вызова конструктора класса страницы
- Событие Init - настройка состояния объектов на основе данных ViewState
- Событие InitComplete - завершение процесса установки контролов
- Проблемы воссоздания дерева элементов на странице при назначении ViewState контролам не в заданном порядке
- Событие PreLoad - вторая попытка донастройки контролов
- Событие Load - ключевое событие жизненного цикла сраницы. Вся страница восстановлена в требуемое состояние
- Событие LoadComplete - когда следует использовать
- Событие PreRender - готовность страницы выразить себя в html-разметке
- Событие PreRenderComplete - разметка сформирована и отправляется на клиент
- Событие UnLoad - удаление страницы из памяти на сервере, клиент загрузил страницу сайта
- Как подписываться на все эти события?
- Более быстрое выполнение на сервере страницы с помощью отключения автоматической подписки на события страницы. Свойство страницы AutoEventWireup
- Сигнатура создания обработчиков событий страницы
- Использование конструктора по умолчанию для ручной подписки на события
Урок 25, 26
- Необходимость получения контента с чужих сайтов с дальнейшим парсингом у себя на сервере
- Получаем html разметку по указанному адресу
- Обязательное использование блоков try catch finally
- Ключевой тип System.Net.WebClient
- Первый вариант получения всей html разметки удаленного сайта
- Занесение контента в объект StreamReader
- Второй способ на основе типов WebRequest и WebResponse
- Выставление требуемой кодировки выходного потока
Перейти к форме заказа
Раздел 1
(создание онлайн телефонного справочника)
Создание онлайн телефонного справочника
Урок 1, 2
- Создание учебного онлайн телефонного справочника
- Создание базы данных телефонного справочника на основе xml разметки
- Табличный контрол вывода данных asp:GridView
- Анализ требований для функциональности телефонного справочника
- Контрол asp:Panel для группирования набора элементов на странице
- Серверный контрол asp:Table и его подэлементы asp:TabelHeaderRow, asp:TabelFooterRow, asp:TabelRow
- Контролы asp:TabelHeaderCell и asp:TabelCell
- Compilation debug="true" - в web.config запись о режиме отладки вебприложения
Урок 3
- Добавляем на страницу asp:GridView и выполняем автонастройку из дизайнера
- Знакомство с возможными типами полей GridView
- Добавляем в GridView несколько полей
- Создаем страницу для вывода детальной информации конкретной персоны
- Настраиваем свойства исходных колонок грида
- Добавляем новую колонку в GridView в режиме разметки
- Разбор типа CommandField GridView-поля
- Создание класса DAL для доступа к БД
- Определение физического пути к исполняемому каталогу сайта
- Получение объекта Server не для типа Page
- Тип HttpContext и свойство Current для получения метода MapPath
- Создание метода для получения всех записей из файла данных xml
- Создание метода для внесения изменений в БД
Урок 4
- Получение всех записей из БД телефонного справочника на странице default.aspx
- Привязываем DataSet на GridView и указываем на заполнение перед выводм html-разметки
- Проверка подтягивания данных в GridView на загруженной странице
Урок 5, 6
- Донастройка GridView, свойство AutoGenerateSelectButton
- Организация передачи пользовательских параметров на другую страницу для текущего поля в GridView
- Настраиваем поля колонки id для загрузки страницы деталей абонента
- Получаем значение параметра строки запроса и используем его для вывода деталей персоны
- Понимаем проблему повторного запроса данных в БД
- Перенастраиваем GridView на автоматическую генерацию колонок в соответствии со структурой источника данных
- Получаем детали персоны на текущей странице - подвязываемся на событие SelectedIndexChanged и SelectedIndexChanging
- Получаем текущую строку GridView в обоих обработчиках события
- Загоняем все TextBox в массив - для чего?
- Тип TableCell для итератора по полям строки в GridView.SelectedRow
- Конвертируем неразрывный пробел в читаемое значение
- Получение сслыки на новую выделенную строку через параметр e.NewSelectedIndex
Урок 7, 8
- Фильтрация и сортировка абонентов на html странице в браузере
- Добавление поисковых текстовых полей
- Для чего нам подписка на событие TextChanged всех поисковых TextBox?
- Выполняем автоматический запрос на сервер без вовлечения в процесс кнопки - свойство AutoPostBack
- Анализ автоматически сгенерированного клиентского JavaScript
- Подписываем все TextBox на требуемое событие в беккоде
- Универсальный поисковый запрос на выборку требуемых записей, соответствующих текущему условию
- Используем обычный DataView для фильтрации
- Формирование поискового запроса фильтрации
- Используем метод AsDataView, работающий на базе LINQ-запроса
- Помещаем кнопку для получения всех записей минуя фильтр
Урок 9
- Необходимость ручного редактирования записей в БД
- Постановка задачи с точки зрения скрытия/отображения контролов на странице в зависимости от стадии редактирования записи
- Добавляем кнопки в футер грида в виде ссылок - asp:LinkButton
- Отличие обычной html-ссылки от серверного окнтрола asp:LinkButton
- Еще несколько нопок управления данными
- Играем с видимостью кнопок входа в режим редактирования и кнопок завершения редактирования
- Подводим первые итоги
Урок 10, 11
- Блокируем верхние TextBox при переходе в режим редактирования
- Озвучиваем проблему сохранения изменений - как указать кнопке Save выполнять одно требуемое поведение из трех возможных?
- Создание метода перехода в режим редактирования и метода завершения редактирования
- Релизовываем обработчик кнопки "Отмена"
- Как определить что конкретно в данный момент по нажатию кнопки "Сохранить" следует добавить в БД запись, удалить запись, или сохранить отредактированную запись?
- Почему не используем сессию для содержания информации о необходимых действиях?
- Выбираем скрытое поле на странице для определения требуемых действий от кнопки "Сохранить"
- Контрол asp:HidenField
- Создаем дополнительное перечисление для скрытого поля
- Устанавливаем значение в скрытое поле в соответствии с ожидаемой последующей операцией над активной записью абонента
Урок 12, 13
- Создание метода сохранения данных в БД
- Блок условия создания новой записи
- Получаем ссылку на новую строку в DataTable
- Получение предпоследней строки в DataTable
- Устанавливаем значения каждого поля новой строки в DataTable
- Блок условия редактирования записи
- Получение ссылки на редактируемую строку не методом Select, а методом Find
- Необходимость настройки уникального (первичного) ключа для таблицы абонентов объекта DataSet
- Указываем первичный ключ на стадии формирования DataSet через свойство PrimaryKey
- Блок условия удаления записи
- Поиск строки для удаления и отправка её в метод Delete
- Подведение итогов проделаной работы с остановкой на ключевых моментах
Урок 14
- Проблема автоматического слежения активной строки за перемещением курсора мыши в веб-приложениях
- Легкость данного замысла в WindowsForms-приложениях и иной подход в ASP.NET-приложениях
- Анализ типичных задач, накладываемых на серверную обработку и клиентскую обработку
- Вариант реализации нашего задума на применении клиентского сценария JavaScript
- Альтернативный способ, работающий при отключенном JavaScript - стили
- Обработчик события RowDataBound для привязки дополнительных событий
- Использование в проверках типа строки GridView через DataControlRowType перечисление RowType
- Опять используем коллекцию Attributes
- Деление по модулю 2 для определения четных и нечетных строк
- Проверка результата в браузере
Перейти к форме заказа
Раздел 2
(работа с XmlDataSource и SqlDataSource)
Работа с XmlDataSource и SqlDataSource
Урок 1
- Обзор элементов вкладки ToolBox
- Группа Data: GridView, DataList, DetailsView, FormView, ListView, Repeater, SqlDataSource, ObjectDataSource, XmlDataSource, LinqDataSource
- Перетягиваем контрол XmlDataSource в разметку страницы телефонного справочника
- В дизайнере назначаем DataSourceID контрола XmlDataSource для GridView в качестве источника данных
- В дизайнере настраиваем XmlDataSource, подтягиваем сам xml-файл для XmlDataSource
- Получаем ошибку получения данных из БД - проблема структуры xml-файла
- Необходимость переработки разметки исходного xml-файла
- Заменяем внутренние теги узлов на параметры внешнего узла
- Проверяем работу контрола при загрузке страницы в браузере
Урок 2
- Возвращаемся к предыдущей структуре xml-разметки на основе отдельных тегов узла
- Пернастраиваем контрол asp:XmlDataSource
- Создаем в VisualStudio файл конвертации .xsl
- Наполняем файл разметкой преобразований
- Анализируем имеющуюся разметку конвертации
- Правила задания шаблонов преобразований в файлах структуры .xsl
- Декларация узлов для исходного xml файла данных
- Для XmlDataSource указываем файл конвертации для Transform file
- Настраиваем постраничный вывод записей для GridView
- Paging - настройка размера страницы и внешнего отображения
Урок 3
- Начало работы с контролом SqlDataSource
- Создание локальной Sql-Server базы данный
- Создание таблицы абонентов
- Настраиваем в дизайнере только что созданный SqlDataSource
- Автоматически генерируем строку запроса Select
- Наполняем данными таблицу на SqlServer
- Натравливаем GridView на данный SqlDataSource
- Анализируем автоматически настроенные столбцы в GridView
- Разбираем разметку контрола SqlDataSource. Синтаксис доступа к конфигурационному файлу web.config непосредственно из разметки
- Анализ типа asp:BoundField - что означает двусторонняя привязка?
Урок 4
- Перенастраиваем SqlDataSource на задание хранимых процедур, или собственных текстов запросов
- Пример использования QueryBuilder для построения текстов sql-запросов
- Настройка SelectCommand, UpdateCommand
- Роль уникального идентификатора в процессе настройки SqlDataSource
- Разрешаем GridView выполнять сортировку вывода строк и редактирование данных
- Анализируем разметку полученного серверного кода
- Анализ клиент-серверного поведения GridView и преобразования типа представления ячеек в режиме редактирования строки
- Тестирование на клиенте режима редактирования строки
- Настройка SqlDataSource DeleteCmmand
- Проверяем режим удаления строки
- Парметры DeleteParameters и UpdateParameters SqlDataSource
Урок 5, 6
- Настройка в дизайнере свойства InsertCommand SqlDataSource
- Анализ параметров InsertParameters
- Натраиваем UpdateCommand на хранимую процедуру
- Создание на сервере хранимой процедуры обновления записи
- Подводим итоги по реализации и использовании SqlDataSource
- Добавляем в таблицу поле типа bool
- Просмотр типа поля для bool типа в GridView
- Анализ выходной html-разметки значения поля типа bool - контрол CheckBox
- Контрол asp:CheckBoxField
- Типы полей HyperLinkField, ImageField, ButtonField
- Правка хранимой процедуры на получение входного параметра типа bit
- Пример настройки SqlDataSource из беккода
Перейти к форме заказа
Раздел 3
(работа с ObjectDataSource)
Работа с ObjectDataSource
Урок 1
- Создание дополнительных типов для реализации механизма применения ObjectDataSource
- Первая попытка настройка контрола ObjectDataSource через дизайнер
- Еще раз о трехуровневой стистеме проекта
- Создание классов Common группы
- Добавляем параметризированный конструктор и открытые свойства доступа
Урок 2, 3
- Разработка класса уровня DAL
- Свойство получения строки соединения с SQL БД connectionString
- Свойство получения текущего SqlConnection с сервером SQL
- Создание метода получения списка List всех абонентов
Урок 4
- Реализация метода обновления абонентов в БД
- Реализация метода удаления абонента из БД
- Реализация метода получения конкретного абонента из БД
- Завершение реализации уровня DAL
Урок 5
- Создание уровня бизнес логики BLL
- Создание метода получения всех абонентов
- В соответствующем методе уровня DAL добавляем в SQL-запрос сортировку выходных данных
- Метод получения абонента по критерию
- Метод обновления абонента
- Метод удаления абонента
- Метод создания абонента
Урок 6
- Настраиваем ObjectDataSource, выбирая между уровнями приложения
- Настраиваем методы Select, Delete, Update, Create
- Анализ полученной разметки контрола ObjectDataSource
- Устанавливаем запрет на редактирование уникального поля в GridView
- Получаем первые проблемы редактирования строки
- Проблема указания уникального идентификатора DataKeyNames
- Еще одна проблема не указания параметра уникального ключа метода уровня DAL
- Подводим итоги выгод использования контрола ObjectDataSource
Урок 7, 8
- Добавляем на форму DetailsView
- Настраиваем новый ObjectDataSource на получение входнргр параметра для вытягивания деталей из БД конкретного абонента
- Проверяем работу DetailsView
- Создаем еще один ObjectDataSource для обновления абонента из DetailsView
- Определяем ключевые параметры для правильного постбэка от DetailsView на сервер для обновления
- Закрываем возможность редактировать в DetailsView поле уникального ключа
- Подвязка данных в DetailsView при постбэке с GridView
- Другой вариант привязки данных в DetailsView при переходе по обычной ссылке
- Перенастраиваем ObjectDataSource на получение/привязку к иному типу входного параметра
- Почему если пользователь меняет в строке адреса значение параметров не влияет на правильность обновления текущей записи?
- Понимание каждой мелочи в функционировании asp.net контролов
Перейти к форме заказа
Раздел 4
(работа с WebServices)
Работа с WebServices
Урок 1, 2
- Выясняем объективные причины существования вебсервисов
- Знакомимся с реально работающим WebService курсов валют, анализируем имеющиеся методы с их описанием
- Как данный вебсервис может пригодится нам на нашем сайте?
- Удобства использования методов вебсервисов
- Первое знакомство с xml-описанием метода вебсервиса
- Анализ xml-описаний входных параметров
- Добавление вебссылки на свой сайт через пункт меню Add WebReference
- Указание имени ссылки
- Получение объекта типа WebService удаленного сервера
- Вызов вебметода получения списка курсов валют
- Отображение полученных данных в GridView
- Получение конкретной строки в результирующем наборе объектов DataRow
- Как часто используются вебсервисы в сети Internet
- Альтернатива вебсервисов в прямом парсинге контента сторонних вебсайтов
Урок 3, 4
- Создание собственного WebService в текущем вебсайте
- Создание первого вебметода для получения всех абонентов из БД телефонного справочника
- Настраиваем строку соединения, Sql-запрос и SqlDataAdapter
- Получаем тип DataSet
- Изменяем параметр Namespace атрибута WebService для класса
- Раскрываем созданный метод для доступа по web
- Выполняем поиск созданного вебсервиса и получаем объект класса метода получения абонентов
- Получаем первую ошибку подключения web reference
- Пересобираем вебсервис и по-новому получаем на него ссылку
- Отладка в режиме реального времени методов вебсервиса
- Получение на уровне DAL ссылки на тип вебсервиса и вызов метода получения всех абонентов
- Тестируем работу приложения
- Вылавливаем имеющиеся ошибки
- Необходимость обновления вебссылок в вебпроекте
- Демонстрация создания и использования обычных методов вебсервиса не доступных по веб
Урок 5, 6
- Получение/передача в вебсервис стандартных .NET типов
- Получение/передача пользовательских типов вебсервиса
- Почему получаем ошибку-исключение невозможности конвертирования на клиенте тип вебсервиса?
- Устраняем ошибки получения пользовательского типа из WebService
- Несколько правил по работе на клиенте с пользовательским типов вебсервиса
Урок 7
- Несколько вводных слов об xml сериализации типов
- Доступ к открытым свойствам объекта пользовательского типа
- Создание public метода в вебсервисе
- Доступ к данному методу на клиенте и отсутствие доступа к этому же методу "через" вебсервис
- Сериализация относится к состоянию объекта, а не к логике реализации типа экземпляра
- Роль атрибута WebMethod для открытых методов WebService
- Переопределяем класс вебсервиса в тип-структуру
- Почему тип-структура сериализуется в тип-класс - значимые и ссылочные типы сериализуются в ссылочные типы
- Представление на клиенте открытых полей в качестве свойств!
Урок 8
- Создание реального вебсервиса для skillcoding.com
- Реализация вебметода для получения хешключа по алгоритму MD5
- Создание клиентского приложения Windows Forms для использования вебсервиса
- Заливка вебсервиса на сайт skillcoding.com
- В клиентском приложении WindowsForms получаем ссылку на вебсервис
- Тестируем работу приложения по генерированию хешключа вводимых данных через вебсервис на skillcoding.com
Урок 9, 10
- Несколько слов о применение атрибутов и их параметров для вебсервисов
- Задание параметра Name для атрибута WebService
- Задание параметра Description для атрибута WebService
- Задание параметра Description для атрибута WebMethod
- Наследование от базового типа WebService
- Несколько слов об использовании вебсервисом объектов Application, Session, HttpContext, Server, Cach, Response, Request
- Вопрос о перегрузке вебметодов вебсервиса
- Почему не следует перегружать вебметоды?
- Создание метода шифрования по алгоритму SHA1
- Задание одинаковых имен двух методов, тем самым создав перегрузку
- Запускаем вебсервис и анализируем выведенные в браузере сообщения об ошибках
- Параметр MessageName для атрибута WebMethod
- Перезапускаем вебсервис. Спецификация SOAP Binding Profile Version 1.0.
- Атрибут WebServiceBinding и настройка параметра ConformsTo в значении WsiProfiles.None
- Обнаружение целевого перегруженного метода по значению параметра MessageName
- Перенастраиваем клиентское приложение на работу с перегруженными методами вебсервиса
- Тестируем работу приложения в реальном времени
Урок 11, 12
- Синхронизация вызовов вебметодов вебсервиса
- Причины необходимости асинхронного вызова вебметода
- Демонстрация временных задержек при работе вебметода
- Реализация асинхронного вызова вебметода удаленного вебсервиса на примере присутствия откликаемости системы в момент ожидания ответа с вебсервиса
- Идея реализации анимированности при выполнении запроса
- Ситуация получше синхронного вызова, однако не идеальна и неуниверсальна
- Загоняем псевдоанимацию в дополнителный поток
- Новая проблема кросспоточного доступа к TextBox
- Создание делегата для метода кросспоточного выполнения
- Вызов метода Invoke
- Новая проблема чрезмерной "настойчивости" псевдоанимации
- Решение проблемы переменной типа bool
Перейти к форме заказа

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

Здравствуй уважаемый Александр. Прежде всего позволь мне поздравить
тебя с выпуском новой серии курсов по всеохватывающему и великому
.NET, честно говоря я немного удивлен видеть так скоро новый курс (тем
более по асп), зная сколь много труда, времени и знаний ты в них
вкладываешь. Итак будучи ярым поклонников твоих продуктов я само-сабой
заинтересован в получении новых знаний. Нисколько не сомневаюсь что
новый курс дает исчерпывающую, хорошо структуированную информацию по
веб технологиям микрософт. Позволь поинтересоваться будут ли в
дальнейшем предложены какие-нибудь скидки на твой новый продукт. Но
как бы то ни было еще раз поздравляю с выпуском 3 серии.
С уважением, Рустам.
Рустам, здравствуй!
Спасибо за теплые слова - очень приятно это слышать в свой адрес.
Но немного уточню по поводу 3-го курса.
Он не является исчерпывающим. Да я и не ставил цель в этом.
В этом курсе я дал базу, ту, без которой ничего не получится дальше.
В этом курсе голые знания, немного нудно, конечно, но я постарался дать поинтереснее материал.
А вот в следующих курсах по ASP.NET (создание портала, создание форума, создания интернетмагазина на AJAX) мы будем "творить" сайты играючи. Но для этого следует заставить себя пройти третью часть. Она самая маленькая из всех.
ПРОДОЛЖЕНИЕ ...аа понятно спасибо за подробный ответ. Понимаю что исчерпывающих
курсов по .нет вобще в принципе не бывает (разве что мсдн но это уже
не курс) но просмотрев оглавление я понял что материал довольно
серьезный тем более зная качество преподавания. Сам я немного знаю асп
впрочем как и винформс и базы данных, только вот просматривая твои
курсы понимаю что ничерта я не знаю ), я сам и работал и писал
программы, только вот доходило до того что я знал что нужно написать
но не знал где(элементарные принципы ооп) и понял что так дальше
нельзя и как то наткнулся на твой курс и честно говоря я таких курсов даже на
английском не видел, здесь тебе надо отдать должное. И сейчас твои
курсы фактически единственный источник знаний для меня, в книгах я
разочаровался а читал я их не мало. так что новый курс я несомненно
приобрету, хотелось бы еще конечно про xml услышать но боюсь не осилю,
времени не много.
Рустам Гулиев
rustamdb@gmail.com, Азербайджан, Баку
|
А язык то проще некуда!

Ну, в общем, с чего всё началось... 1.5 года назад купил я книгу Фленова Михаила "Библия C#"(казалось бы, человек, написавший замечательную Библию Delphi, не может написать следующую книгу хуже). Начал читать, а там изложение материала настолько хреновое, что плюнул я на это дело, поставив на язык ярлык "Неподъёмный". Но вот несколько месяцев назад случайно наткнулся на первую часть курса и... "А язык то проще некуда!".
Вы, Александр, просто великолепно подаёте материал, хоть и местами слишком всё разжёвано(однако не могу считать это минусом, т.к. если человеку толдычить "Ножик перочинный и перочинный ножик" то в конце-концов он запомнит, что "Ножик - перочинный" или другими словами "Повторение - мать учения"... тут ещё много примеров можно приводить).
А недавно пошёл на курсы по ASP.NET в компанию IBA(одна из крупнейших в нашей стране).Но лекторша попалась... сама никогда ничего не писала и дальше методички знаний нет. В общем не буду вдаваться в подробности этого фейла(ну,к примеру, она не смогла мне объяснить почему в методичке объявляется переменная "public DateTime? dt" - с вопросительным знаком), просто "Пришла группа с желанием получить знания, а ушла с сертификатом и... желанием получить всё те же знания". Вот потому мы и решили воспользоваться проверенным источником, чтоб потом не стыдно было этот сертификат показывать :).
P.S. По поводу фамилий действительно забавно). Но вот мои корни уходят в Россию... В голодные времена предки переселились в более благоприятную Беларусь(Хотя сейчас самое бы время сваливать отсюда подальше))
Гундин Александр
Гундин Александр
gundin.aa@gmail.com, Беларусь, Минск
|
ВНИМАНИЕ!
С технической стороны доставки курса, - я по-прежнему несу всю ответственность по доставке данного диска. Это означает, что даже если диск не дойдет до Вас, либо придет в непригодном к использованию состоянии, я вышлю его повторно за свой счет. Пока клиент не получил заказанный курс, он (заказ) находится на особом положении в моей системе учета заказами.
Цена курса составляет:
85,00 €
Доставка в любую страну мира включена в цену *
Перейти на страницу часто задаваемых вопросов
Форма заказа
Курс записан на DVD-диск. После получения Вашего
заказа диск отправляется на Ваш адрес ценной посылкой в специально
защищенной упаковке. Время оформления и отправки заказа –
не более
48 часов с момента его поступления в любой день недели **.
Только для граждан Украины возможна оплата наложенным платежом
в ближайшем почтовом отделении при непосредственном получении посылки на руки.
Чтобы начать оформление заказа, нажмите кнопку "Начать
оформление заказа". Если вы сомневаетесь в надежности автоматической оплаты
на данном сайте, Вы можете написать мне на aleksandergudok@gmail.com,
support@winforms.ru о желании приобрести курс.
Оплата производится либо онлайн (на один из кошельков: WMID 188371837698), либо офлайн.
В день отправки курса, по требованию клиента я предоставляю код бандероли, по которому возможно в режиме онлайн отслеживать за перемещением бандероли.
(!) Если у Вас возникли
проблемы с оплатой, или Вы хотите оплатить курс иным образом, то напишите мне об этом на "
aleksandergudok@gmail.com, support@winforms.ru".
Если Вы ещё сомневаетесь дойдёт ли диск, то заверяю Вас, что дойдёт обязательно. В любом случае диск будет у Вас в руках!!!
* - в страны дальнего зарубежья возможна доставка быстрой авиа-почтой, которая на 3$ дороже обычной.
** - в зависимости от удалённости вашего населённого пункта, а также прочих условий, доставка посылки займет от 2 до 35 дней.
Если Вы проживаете в Украине, или просто имеете возможность посетить Винницу, то Вы можете лично встретиться со мной для мгновенного получения DVD-курса.
Все права защищены. Copyright © 2011. Александр Гудок. ИНН: 2998904311