вторник, 02 апреля 2013
If it's stupid but works, it isn't stupid.
понедельник, 01 апреля 2013
If it's stupid but works, it isn't stupid.
http://www.youtube.com/watch?v=bh6HYU71Mtg
Создаем ASP.NET MVC 4 Web Application -- Internet Application
Создаем БД (папка App_Date -- New Item -- SQL Server Database -- создаем поля таблицы -- Update)
заполняем таблицу (ПКМ на названии таблицы -- Show Table Data -- вводим данные)
создаем модель (классы, описывающие данные) (папка Models -- Add -- New Item -- подпапка Data -- LINQ to SQL Classes)
из Server Explorer перетаскиваем таблички на нашу модель -- VS создает класс
создаем контроллер (папка Controller -- Add -- Controller -- MVC controller with empty read/write action)
в контроллере создаем представление для просмотра -- Index -- Add View -- создаем представление (View Engine -- Razor; Create a strongly-typed view; Выбираем Model Class; Выбираем шаблон -- List; Выбираем шаблон или мастер-пейдж)
в контроллере создаем представление для редактирования -- Edit -- Add View -- создаем представление (View Engine -- Razor; Create a strongly-typed view; Выбираем Model Class; Выбираем шаблон -- Edit; Выбираем шаблон или мастер-пейдж)
В нашем контроллере в метод public ActionResult Edit(int id, FormCollection collection) добавляем логику, которая будет сохранять изменения в БД
-- подключаемся к БД
-- создаем объект контакта
модифицируем метод public ActionResult Edit(int id)
и метод public ActionResult Index()
Для того, чтобы создать пункт меню на главной странице, добавляем в шаблон
Создаем ASP.NET MVC 4 Web Application -- Internet Application
Создаем БД (папка App_Date -- New Item -- SQL Server Database -- создаем поля таблицы -- Update)
заполняем таблицу (ПКМ на названии таблицы -- Show Table Data -- вводим данные)
создаем модель (классы, описывающие данные) (папка Models -- Add -- New Item -- подпапка Data -- LINQ to SQL Classes)
из Server Explorer перетаскиваем таблички на нашу модель -- VS создает класс
создаем контроллер (папка Controller -- Add -- Controller -- MVC controller with empty read/write action)
в контроллере создаем представление для просмотра -- Index -- Add View -- создаем представление (View Engine -- Razor; Create a strongly-typed view; Выбираем Model Class; Выбираем шаблон -- List; Выбираем шаблон или мастер-пейдж)
в контроллере создаем представление для редактирования -- Edit -- Add View -- создаем представление (View Engine -- Razor; Create a strongly-typed view; Выбираем Model Class; Выбираем шаблон -- Edit; Выбираем шаблон или мастер-пейдж)
В нашем контроллере в метод public ActionResult Edit(int id, FormCollection collection) добавляем логику, которая будет сохранять изменения в БД
-- подключаемся к БД
-- создаем объект контакта
модифицируем метод public ActionResult Edit(int id)
и метод public ActionResult Index()
Для того, чтобы создать пункт меню на главной странице, добавляем в шаблон
пятница, 29 марта 2013
If it's stupid but works, it isn't stupid.
6. Создание контроллера консоли администратора
Создание контроллера для редактирования.
Папка Controllers --- ПКМ --- Add Controller --- Admin Controller
Выбираем Template --- MVC controller with empty read/write action
Переносим в созданный контроллер методы public ActionResult Index() и public ActionResult Details(int id) из HomeController
линк
Создание контроллера для редактирования.
Папка Controllers --- ПКМ --- Add Controller --- Admin Controller
Выбираем Template --- MVC controller with empty read/write action
Переносим в созданный контроллер методы public ActionResult Index() и public ActionResult Details(int id) из HomeController
линк
If it's stupid but works, it isn't stupid.
5. Создание представления для деталей
В контроллер HomeController описываем новый класс public ActionResult Details(int id)
и создаем представление (см. урок 4), выбираем для него Details.
Представление готово.
линк
В контроллер HomeController описываем новый класс public ActionResult Details(int id)
и создаем представление (см. урок 4), выбираем для него Details.
Представление готово.
линк
четверг, 28 марта 2013
If it's stupid but works, it isn't stupid.
4. Создание представления
Создаем Мастер-пейдж
Views --- Shared --- Add New Item --- MVC4 View Master Page -- создаем мастер-пейдж
Добавляем на неё нужные элементы (таблицы стилей и др.)
Открываем контроллер HomeController, кликаем ПКМ по названию класса public ActionResult Index() --- Add View --- Добавляем представление (добавляем мастер-пейдж, выбираем Scaffold template - empty, list и др.)
Получаем представление.
Метод Html.ActionLink() создает гиперссылку.
линк
Создаем Мастер-пейдж
Views --- Shared --- Add New Item --- MVC4 View Master Page -- создаем мастер-пейдж
Добавляем на неё нужные элементы (таблицы стилей и др.)
Открываем контроллер HomeController, кликаем ПКМ по названию класса public ActionResult Index() --- Add View --- Добавляем представление (добавляем мастер-пейдж, выбираем Scaffold template - empty, list и др.)
Получаем представление.
Метод Html.ActionLink() создает гиперссылку.
линк
If it's stupid but works, it isn't stupid.
3. Создание контроллера
Создание контроллера для отображения на представлении тех данных, которые содержаться в модели.
Папка Controllers --- Add --- Controller --- задаем имя контроллера
В контроллере
Создание контроллера для отображения на представлении тех данных, которые содержаться в модели.
Папка Controllers --- Add --- Controller --- задаем имя контроллера
В контроллере
If it's stupid but works, it isn't stupid.
2. Создание модели
Создание модели данных
Папка Models --- Add New Item --- Data --- ADO.NET Entity Data Model --- Generate from database (создание на основе существующей БД) --- Выбрать БД, создать соединение --- Выбрать, что хотите включить в БД (Tables, Views и др)
Флажок Pluralize or singularize generated object names говорит о том, что название класса, описывающего сущность из Бд, будет задано в единственном числе (напр., Flower) в том случает, если название БД задано во множественном числе (Flowers)
Т.о. создана модель.
линк
Создание модели данных
Папка Models --- Add New Item --- Data --- ADO.NET Entity Data Model --- Generate from database (создание на основе существующей БД) --- Выбрать БД, создать соединение --- Выбрать, что хотите включить в БД (Tables, Views и др)
Флажок Pluralize or singularize generated object names говорит о том, что название класса, описывающего сущность из Бд, будет задано в единственном числе (напр., Flower) в том случает, если название БД задано во множественном числе (Flowers)
Т.о. создана модель.
линк
среда, 27 марта 2013
If it's stupid but works, it isn't stupid.
Найти в html-коде ссылку на .swf файл
Создать в редакторе html-документ, записать в виде ссылки
Открыть в браузере, кликнуть ПКМ -- Сохранить как -- Сохранить .swf файл в нужное место
Создать в редакторе html-документ, записать в виде ссылки
Открыть в браузере, кликнуть ПКМ -- Сохранить как -- Сохранить .swf файл в нужное место
If it's stupid but works, it isn't stupid.
If it's stupid but works, it isn't stupid.
1. Создание проекта и добавление базы данных
Чтобы добавить в веб-приложение БД нужно создать папку App_Data (если она не создана)
Затем Add --- New Item --- SQL Server Database
VIEW --- Server Explorer - можно видеть, что есть в этой БД
Добавить новую таблицу
Server Explorer --- Tables --- Add New Table
Чтобы для этого поля автоматически назначалось значение
Properties --- Identity Specification
(Is Identity) -- True
Identity Increment -- 1 (шаг приращения)
Identity Seed -- 1
Графа Allow Nulls говорит о том, является ли поле обязательным (true) или необязательным (false)
Чтобы добавить записи в таблицу
ПКМ --- Show Table Data
линк
Чтобы добавить в веб-приложение БД нужно создать папку App_Data (если она не создана)
Затем Add --- New Item --- SQL Server Database
VIEW --- Server Explorer - можно видеть, что есть в этой БД
Добавить новую таблицу
Server Explorer --- Tables --- Add New Table
Чтобы для этого поля автоматически назначалось значение
Properties --- Identity Specification
(Is Identity) -- True
Identity Increment -- 1 (шаг приращения)
Identity Seed -- 1
Графа Allow Nulls говорит о том, является ли поле обязательным (true) или необязательным (false)
Чтобы добавить записи в таблицу
ПКМ --- Show Table Data
линк
понедельник, 25 марта 2013
If it's stupid but works, it isn't stupid.
На странице до html-кода вставляем скрипт
В файле шаблона _Layout.cshtml пишем
@RenderSection("scripts", required: false)
В файле шаблона _Layout.cshtml пишем
@RenderSection("scripts", required: false)
пятница, 22 марта 2013
If it's stupid but works, it isn't stupid.
- Шаблоны страницы (MasterPage)
-- Шаблон разметки для группы страниц - Темы (Theme)
-- Набор файлов стилей и изображений - Скины (Skins)
-- Оформление ЭУ
Add -- New item -- Master page
Мастер-пейдж содержит элементы ContentPlaceHolder
куда всё страницы вставляют свой контент.
Add -- New item -- Web Form using Master Page
На странице есть блоки Content, которые передаются в блоки с соответствующим ID мастер-пейджа
Мастер-пейджи можно делать вложенными
Темы
Создание темы
Add -- Add ASP.NET Folder -- Theme
В результате создается папка App_Themes -- в ней файлы тем Theme1
Другие файлы тем также добавляются через Add -- Add ASP.NET Folder -- Theme2
Добавить файлы в тему
Щелчок по теме -- Add -- New Item -- css и skin файлы
Создаем css файл -- щелчок ПКМ внутри тега -- Build Style (Графический редактор для редактирования стилей)
Подключение темы
Непосредственно в заголовке страницы <%@ Page %>
Theme="Blue"
Скины
Щелчок на теме ПКМ -- Add -- New Item -- skin
Cкин-файлы
Отрабатывают на сервере.
Скин-файл выбирается в зависимости от присвоенной темы и автоматически применяется ко всем элементам данного типа.
Удаляем из скин-файла автоматически созданный комментарий и создаем свои свойства для элемента
Чтобы разным элементам одного типа присвоить разные скины, скинам задается скин-id SkinID
Скины
Контролы на странице
Также можно использовать для задания внешнего вида элементов свойство CssClass
Выбор темы на странице
На странице создаем выпадающий список
Курсы по asp.net от intuit.ru часть №4
четверг, 21 марта 2013
If it's stupid but works, it isn't stupid.
Форма такого вида

Изначально отображается только кнопка "Добавить", при клике на эту кнопку отображается форма, к полям формы подключены валидаторы.
Для того, чтобы кнопка AddButton отвечала только за отображение/скрытие формы, к ней добавляются атрибуты
UseSubmitBehavior="False" кнопка становится type="button"
CausesValidation="False" при клике на кнопку НЕ происходит валидация
Контрол для кнопки AddButton
То же самое через Javasсript
Кнопка AddButton
Положить форму в таблицу
Скрипт

Изначально отображается только кнопка "Добавить", при клике на эту кнопку отображается форма, к полям формы подключены валидаторы.
Для того, чтобы кнопка AddButton отвечала только за отображение/скрытие формы, к ней добавляются атрибуты
UseSubmitBehavior="False" кнопка становится type="button"
CausesValidation="False" при клике на кнопку НЕ происходит валидация
Контрол для кнопки AddButton
То же самое через Javasсript
Кнопка AddButton
Положить форму в таблицу
Скрипт
If it's stupid but works, it isn't stupid.
1. Создать папку со скриптами Scripts, закинуть в нее библиотеку jQuery
2. Подключить библиотеку к странице
3. Создать файл Global.asax, если он еще не создан.
В методе Application_Start прописать событие
http://www.codeproject.com/Articles/465613/WebForms-UnobtrusiveValidationMode-requires-a
2. Подключить библиотеку к странице
3. Создать файл Global.asax, если он еще не создан.
В методе Application_Start прописать событие
http://www.codeproject.com/Articles/465613/WebForms-UnobtrusiveValidationMode-requires-a
If it's stupid but works, it isn't stupid.
Для того, чтобы превратить input в textarea,
нужно вставить обычное поле TextBox
и изменить свойство
TextMode на Multiline
Можно так же выбрать другие свойства: Password, Number, Color, Range и тд.
нужно вставить обычное поле TextBox
и изменить свойство
TextMode на Multiline
Можно так же выбрать другие свойства: Password, Number, Color, Range и тд.
среда, 20 марта 2013
If it's stupid but works, it isn't stupid.
Элемент-контейнер PlaceHolder - пустой элемент для объединения контролов
Для динамического добавления элементов в PlaceHolder создадим кнопку
и навесим на кнопку обработчик
вывод html-кода через LiteralControl - контрол, который просто выводит тот текст, который в нем есть.
Курсы по asp.net от intuit.ru часть №3
Для динамического добавления элементов в PlaceHolder создадим кнопку
и навесим на кнопку обработчик
вывод html-кода через LiteralControl - контрол, который просто выводит тот текст, который в нем есть.
Курсы по asp.net от intuit.ru часть №3
If it's stupid but works, it isn't stupid.
На одной странице происходит изменение содержания, для этого были добавлены специальные элементы-контейнеры Wizard, MultiView, Placeholder
Добавим на страницу контрол Toolbox -- Standart -- MultiView
MultiView группирует контролы по некоторому признаку.
Добавляем элементы View
Элемент MultiView единовременно отображает только одну из вкладок View.
Таким образом можно эмулировать переход пользователя между несколькими шагами.
Свойства MultiView
ActiveViewIndex -- показывает, какой View активен по умолчанию (индексация начинается с 0)
Добавляем после формы несколько LinkButton
и к каждой кнопке LinkButton добавляем обработчик клика
Один обработчик ко всем кнопкам LinkButton
и добавим этот обработчик ко всем кнопкам
Курсы по asp.net от intuit.ru часть №3
Добавим на страницу контрол Toolbox -- Standart -- MultiView
MultiView группирует контролы по некоторому признаку.
Добавляем элементы View
Элемент MultiView единовременно отображает только одну из вкладок View.
Таким образом можно эмулировать переход пользователя между несколькими шагами.
Свойства MultiView
ActiveViewIndex -- показывает, какой View активен по умолчанию (индексация начинается с 0)
Добавляем после формы несколько LinkButton
и к каждой кнопке LinkButton добавляем обработчик клика
Один обработчик ко всем кнопкам LinkButton
и добавим этот обработчик ко всем кнопкам
Курсы по asp.net от intuit.ru часть №3
If it's stupid but works, it isn't stupid.
Форма
Контрол для кнопки Save
/*Выводит содержимое текстовых полей в метке Label
Валидация текстовых полей
К текстовому полю ID="txtFirstName" подключаем валидатор RequiredFieldValidator (Toolbox -- Validation) - проверяет, введено ли значение в текстовое поле
В свойствах валидатора задаем
ControlToValidate - id поля, которое проверяем
ErrorMesssage - текст сообщения об ошибке
Валидация Email
В дополнение к RequiredFieldValidator добавляется проверка на корректность введенного email адреса при помощи RegularExpressionValidator
Аналогичным образом выбираем
ControlToValidate - поле, которое проверяем
ErrorMesssage - Email введен некорректно
+ заполняем поле
ValidationExpression -- там есть набор предустановленных выражений -- выбираем выражение Internet e-mail adress и получаем соответствующее регулярное выражение.
Сообщаем серверу, что на форме есть валидация.
Добавляем в контрол кнопки Save
if (!Page.IsValid) return;
/*Если страница не валидна, то дальнейшее выполнение обработчика прекращается.
Валидация формы с большим количеством полей
Контрол ValidationSummary
Перед полями формы, но внутри серверной формы runat="server" вставляем тег
Свойство валидатора
Display
------------ Static (всегда занимает место на странице)
------------ Dinamic (если он не отображается, то не занимает место, и все валидаторы, которые идут за ним, занимают его место)
Text Сообщение, которое выводится непосредственно рядом с валидируемым текстовым полем
DisplayMode - определяет вид, в котором выводятся ошибки - список, список с буллитами, в одну строку.
CssClass - добавить свой класс и определить внешний вид.
ShowMessageBox true/false - всплывающее окно (js функция alert), в котором отображаются ошибки.
ShowSummary true/false - выводить список ошибок/нет
Другие валидаторы
RangeValidator - числовое значение в заданном диапазоне
CustomValidator - собственное правило валидации (например, проверяем, если ли введенный email в базе данных)
ErrorMessage Указанный email уже существует
ControlToValidate txtEmail
Создаем метод в Default.aspx.cs
/*Условный пример*/
Курсы по asp.net от intuit.ru часть №3
Контрол для кнопки Save
/*Выводит содержимое текстовых полей в метке Label
Валидация текстовых полей
К текстовому полю ID="txtFirstName" подключаем валидатор RequiredFieldValidator (Toolbox -- Validation) - проверяет, введено ли значение в текстовое поле
В свойствах валидатора задаем
ControlToValidate - id поля, которое проверяем
ErrorMesssage - текст сообщения об ошибке
Валидация Email
В дополнение к RequiredFieldValidator добавляется проверка на корректность введенного email адреса при помощи RegularExpressionValidator
Аналогичным образом выбираем
ControlToValidate - поле, которое проверяем
ErrorMesssage - Email введен некорректно
+ заполняем поле
ValidationExpression -- там есть набор предустановленных выражений -- выбираем выражение Internet e-mail adress и получаем соответствующее регулярное выражение.
Сообщаем серверу, что на форме есть валидация.
Добавляем в контрол кнопки Save
if (!Page.IsValid) return;
/*Если страница не валидна, то дальнейшее выполнение обработчика прекращается.
Валидация формы с большим количеством полей
Контрол ValidationSummary
Перед полями формы, но внутри серверной формы runat="server" вставляем тег
Свойство валидатора
Display
------------ Static (всегда занимает место на странице)
------------ Dinamic (если он не отображается, то не занимает место, и все валидаторы, которые идут за ним, занимают его место)
Text Сообщение, которое выводится непосредственно рядом с валидируемым текстовым полем
DisplayMode - определяет вид, в котором выводятся ошибки - список, список с буллитами, в одну строку.
CssClass - добавить свой класс и определить внешний вид.
ShowMessageBox true/false - всплывающее окно (js функция alert), в котором отображаются ошибки.
ShowSummary true/false - выводить список ошибок/нет
Другие валидаторы
RangeValidator - числовое значение в заданном диапазоне
CustomValidator - собственное правило валидации (например, проверяем, если ли введенный email в базе данных)
ErrorMessage Указанный email уже существует
ControlToValidate txtEmail
Создаем метод в Default.aspx.cs
/*Условный пример*/
Курсы по asp.net от intuit.ru часть №3
If it's stupid but works, it isn't stupid.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides "Design Patterns"
Э.Гамма, Р.Хелм, Р.Джонсон, Дж.Влиссидес "Приемы объектно-ориентированного программирования. Паттерны проектирования"
Э.Гамма, Р.Хелм, Р.Джонсон, Дж.Влиссидес "Приемы объектно-ориентированного программирования. Паттерны проектирования"
вторник, 19 марта 2013
If it's stupid but works, it isn't stupid.
Вывод на странице поля из Global.resx
@Resources.Global.Название_Поля
Если поле содержит html-код, то
@Html.Raw(@Resources.Global.Название_Поля)
@Resources.Global.Название_Поля
Если поле содержит html-код, то
@Html.Raw(@Resources.Global.Название_Поля)