Исходные коды программ и игр

Программирование - работа и хобби

Два примера сайтов ASP.NET MVC

Язык программирования C#

Два исходника MVC

Исходники сайта на языке программирования C# построенных по шаблону MVC на платформе ASP.NET. В одном исходнике для каждой модели одно представление (View). Второй исходник демонстрирует более широкие возможности схемы MVC: одна модель имеет несколько представлений, несколько видов отображения данных.

Что такое MVC

Аббревиатура MVC происходит от слов Model-View-Controller. Model (Модель) - что будем показывать, View (Вид) - как будем показывать, Controller (Контроллер) - кто будет управлять. Стандарт MVC наиболее распространённый стиль создания сайтов. Четкое разделение разных составляющих веб проекта: дизайн, управление запросами пользователей, программная логика. Благодаря разбиению сложного на простые части повышается эффективность работы над веб-сайтом.

Краткая история MVC

Впервые концепция MVC была сформулирована и описана Трюгве Реенскаугом (норвежский ученый в сфере компьютерных наук и заслуженный профессор университета Осло) в 1979 году, работавшим в то время над языком программирования Smalltalk в Xerox PARC. Затем, на практике, была реализована версия MVC для библиотеки классов Smalltalk-80. Окончательная версия концепции была опубликована лишь в 1988 году в журнале Journal of Object Technology. Впоследствии шаблон проектирования MVC стал развиваться и конкретизироваться.

Составляющие части MVC

В настоящее время 3-х составная схема MVC широко распространена, и применяется в веб-разработках независимо от языка программирования, платформ и операционных систем.

Функции частей MVC:
  • Model - программная обработка и обращение к базе данных;
  • View - выводит результат в требуемом виде, к одной модели можно прикрепить несколько разных представлений;
  • Controller - распределяет внешние запросы пользователей между моделью и представлением.

Практический смысл MVC

Практическая польза от создания сайтов по концепции MVC:
  • Комфортность работы над сложной структурой сайта;
  • Сосредоточение в одном секторе программирования;
  • Возможность многократного использования отдельных частей приложения;
  • Возможность использования множества макетов для любой страницы сайта;
  • Небольшое количество шаблонов страниц позволяет создавать богатое разнообразное содержание сайта.

Упрощение работы над сложной структурой сайта

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

Исходники на ASP.NET MVC C#

Концепция MVC используется для многих платформ и языков программирования, не исключение и ASP.NET. В нашем случае исходники веб-сайтов написаны на языке C# на платформе ASP.NET в соответствии с шаблоном Модель-Вид-Контроллер. C# мощный, легко изучаемый язык программирования, специально созданный для платформы .NET. Являясь языком прикладного уровня C# предоставляет огромные возможности по сравнению с другими языками веб-разработок. Одно из многих достоинств C# это то, что он играючи справляется с любыми кодировками и символами.

Создание шаблона MVC

Самостоятельно создать шаблон сайта MVC очень сложно, и если не задаваться целью создания собственного каркаса, рекомендуется использовать готовые шаблоны в составе среды программирования Microsoft Visual Studio .NET. Для отдельных разработчиков компания Microsoft предоставляет бесплатные интегрированные среды Visual Studio Express и Visual Studio Community, а для организаций - профессиональные инструменты с широчайшими возможностями Visual Studio Professional и Visual Studio Enterprise.

Модель шаблона ASP.NET MVC

В шаблоне MVC платформы ASP.NET в качестве модели выступают «обыкновенные классы» C#, получающие данные из источника для формирования контента. Название класса может быть любым, но если используется Entity Framework для доступа к данных, то названия классов должны совпадать с названиями таблиц базы. Как правило, в классах происходит основная логическая работа, далее через контроллеры в представления передаются уже готовые данные. Вспомогательную часть программной обработки можно осуществлять в дополнительных классах и контроллерах, стараясь минимизировать количество программного кода в методах контроллеров.

Модель приложения класс Animals


// Класс модели 
// Все запросы к базам данных в этом классе
public class Animals
{
    // Список с данными животных
    public List<DataAnimals> List = new List<DataAnimals>();
 
    // Инициализация каталога со списком животных
    public Animals(string dir = null)
    {
        Dogs dogs;
        Cats cats;
        Fish fish;
 
        switch (dir)
        {
            case "Dogs":
                dogs = new Dogs(List, "dogs/");
                break;
            case "Cats":
                cats = new Cats(List, "cats/");
                break;
            case "Fish":
                fish = new Fish(List, "fish/");
                break;
            default:
                dogs = new Dogs(List, "dogs/");
                cats = new Cats(List, "cats/");
                fish = new Fish(List, "fish/");
                break;
        }
    }
 
    // Инициализация данных животного по идентификатору
    public Animals(string dir, string id)
    {
        Dogs dogs;
        Cats cats;
        Fish fish;
 
        switch (dir)
        {
            case "Dogs":
                dogs = new Dogs(List, "dogs/", id);
                break;
            case "Cats":
                cats = new Cats(List, "cats/", id);
                break;
            case "Fish":
                fish = new Fish(List, "fish/", id);
                break;
            default:
            //
                break;
        }
    }
}

Контроллер шаблона ASP.NET MVC

Контроллер это специальный класс ASP.NET MVC, производный от базового класса Controller. Название каждого контроллера обязательно должно состоять из двух частей: имени и суффикса Controller, например HomeController, AnimalsController. Контроллеров в веб-приложении может быть несколько. Controller шаблона ASP.NET MVC имеет методы реагирующие на HTTP-запросы направляемые на веб-сайт. Имена контроллеров и названия методов являются частями веб-адреса, например: http://domen/home(контроллер)/index(метод), http://domen/animals(контроллер)/dogs(метод).

Контроллер Animals

 
public class AnimalsController : Controller
{
    // GET:
    public ActionResult Index()
    {
        Animals animals = new Animals();
 
        return View(animals);
    }
 
    public ActionResult Dogs(string id)
    {
        Animals animals;
 
        if(id != null)
        {
            animals = new Animals("Dogs", id);
            return View("Id", animals);
        }
 
        animals = new Animals("Dogs");
 
        return View(animals);
    }
 
    public ActionResult Cats(string id)
    {
        Animals animals;
 
        if (id != null)
        {
            animals = new Animals("Cats", id);
            return View("Id", animals);
        }
 
        animals = new Animals("Cats");
 
        return View(animals);
    }
}

Представления это компонент View ASP.NET MVC

В качестве представлений выступают файлы с расширением .cshtml, vbhtml с обработчиком Razor, позволяющий гармонично внедрять код языков .NET в код HTML. Основой синтаксиса Razor является знак @, после которого осуществляется переход к коду на языках C#/VB.NET. Также возможно использование и сторонних движков для представлений. Файлы .cshtml и .vbhtml в процессе генерации ответа контроллером компилируются в классы, из которых затем создается страница с "чистым" HTML кодом. Концепция MVC предписывает использовать минимальное количество кода C# и VB.NET в представлениях, поскольку вся основная программная обработка должна происходить в модели и контроллерах.

Представление для метода контроллера Cats


@* Устанавливаем тип модели *@
@model ASPMVC.Models.Animals
 
@{
    ViewBag.Title = "Семейство кошачьих";
    Layout = "~/Views/_LayoutPage1.cshtml";
}
 
<h2>Семейство кошачьих</h2>
 
 
@* После того как тип модели установили, обращаемся
    к объекту модели по имени Model *@
<ul>
    @for (int i = 0; i < @Model.List.Count; i++)
    {
        <li><a href="/animals/@Model.List[i].Url">@Model.List[i].Name</a></li>
    }
</ul>

Код HTML в браузере после обработки сервером


<h2>Семейство кошачьих</h2>
 
 
<ul>
        <li><a href="/animals/cats/koshka-dom">Кошка домашняя</a></li>
        <li><a href="/animals/cats/tigr">Тигр</a></li>
        <li><a href="/animals/cats/rys">Рысь</a></li>
</ul>

Маршрутизация и веб-адреса шаблона ASP.NET MVC

В шаблон ASP.NET MVC встроена возможность создания человеко-понятных (ЧПУ) веб-адресов. При обработке запросов каркас ASP.NET MVC опирается на продвинутую систему маршрутизации, которая сопоставляет все входящие запросы с определенными в системе маршрутами. Каждый отдельный маршрут указывает какой контроллер (его метод) должен обработать входящий запрос. Встроенный в шаблон маршрут по умолчанию предполагает трехзвенную структуру: контроллер/метод/параметр, а непосредственно адрес выглядит: домен/каталог(имя_контроллера)/раздел(название_метода)/параметр. Возможно определение любой структуры маршрутов.

Последовательность создания сайта на MVC в Visual Studio

  • Создание пустого шаблона MVC
  • Создание модели для получения (создания) требуемых данных
  • Создание контроллера для возможных запросов пользователей
  • Создание страницы макета для представлений. С помощью макета достигается однообразие дизайна веб страниц сайта
  • Создание представлений

Ещё раз о комфортности схемы MVC

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

Исходники сайтов на платформе ASP.NET MVC

Ниже прикреплены исходники сайтов шаблона ASP.NET MVC: с одним представлением для каждой модели, в другом для одной модели используются несколько визуальных форм. Исходники можно тестировать создавая новые контроллеры, представления и изменяя модель. Исходный код написан в среде MS Visual Studio .NET 2015 Community, для работы над исходниками можно использовать MS Visual Studio .NET 2013 и выше, а также SharpDevelop 4.4 и выше.

Примечание. После загрузки исходника в Visual Studio .NET требуется очистить проект, а затем его вновь собрать. Таким образом будут установлены необходимые библиотеки. Компьютер должен быть подключён к сети интернет.

Файл: aspmvc.zip
Размер: 2282 Кбайт
Загрузки: 1599