Добавление контроллера

по Рик Андерсон (

Note

Обновленная версия этого учебника доступна здесь , в которой используется ASP.NET MVC 5 и Visual Studio 2013. Он более безопасен, гораздо проще следовать и демонстрирует дополнительные функции.

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

  • M Оделс: классы, представляющие данные приложения и использующие логику проверки для применения бизнес-правил для этих данных.
  • V редставления: файлы шаблонов, используемые приложением для динамического создания ответов HTML.
  • C — это классы, которые обрабатывали входящие запросы браузера, извлекают данные модели, а затем указывают шаблоны представлений, которые возвращают ответ в браузер.

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

Начнем с создания класса Controller. В Обозреватель решенийщелкните правой кнопкой мыши папку Controllers и выберите пункт Добавить контроллер.

Присвойте новому контроллеру имя "HelloWorldController". Оставьте шаблон по умолчанию пустым контроллером MVC и нажмите кнопку Добавить.

добавить контроллер

Обратите внимание, что в Обозреватель решений создан новый файл с именем HelloWorldController.CS. Файл открыт в интегрированной среде разработки.

Замените содержимое файла на код, приведенный ниже.

using System.Web;
using System.Web.Mvc; 
 
namespace MvcMovie.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
        // 
        // GET: /HelloWorld/ 
 
        public string Index() 
        { 
            return "This is my <b>default</b> action..."; 
        } 
 
        // 
        // GET: /HelloWorld/Welcome/ 
 
        public string Welcome() 
        { 
            return "This is the Welcome action method..."; 
        } 
    } 
}

В качестве примера методы контроллера будут возвращать строку HTML. Контроллеру присваивается имя HelloWorldController, а первым приведенному выше методу присваивается имя Index. Давайте выберем его из браузера. Запустите приложение (нажмите клавишу F5 или CTRL + F5). В браузере добавьте "HelloWorld" в путь в адресной строке. (Например, на рисунке ниже http://localhost:1234/HelloWorld.) Страница в браузере будет выглядеть, как на следующем снимке экрана. В приведенном выше методе код возвратил строку напрямую. Вы сообщили системе, что просто возвращали какой-либо код HTML.

ASP.NET MVC вызывает различные классы контроллеров (и различные методы действий в них) в зависимости от входящего URL-адреса. Логика маршрутизации URL-адресов по умолчанию, используемая ASP.NET MVC, использует следующий формат для определения того, какой код вызывать:

/[Controller]/[ActionName]/[Parameters]

Первая часть URL-адреса определяет класс контроллера для выполнения. Поэтому /хелловорлд сопоставляется с классом HelloWorldController. Вторая часть URL-адреса определяет метод действия для выполняемого класса. Поэтому /хелловорлд/индекс приведет к выполнению метода Index класса HelloWorldController. Обратите внимание, что нам пришлось бы перейти к /хелловорлд , а метод Index использовался по умолчанию. Это вызвано тем, что метод, именуемый Index, является методом по умолчанию, который будет вызываться на контроллере, если он не указан явно.

Перейдите по адресу http://localhost:xxxx/HelloWorld/Welcome. Метод Welcome выполняет и возвращает строку, "это метод действия приветствия...". Сопоставление MVC по умолчанию — /[Controller]/[ActionName]/[Parameters]. Для этого URL-адреса заданы контроллер HelloWorld и метод действия Welcome. Часть URL-адреса [Parameters] на данный момент еще не использовалась.

Давайте немного изменим пример, чтобы вы могли передать некоторые сведения о параметрах с URL-адреса на контроллер (например, /хелловорлд/велкоме? Name = скотт&нумтимес = 4). Измените метод Welcome, включив в него два параметра, как показано ниже. Обратите внимание, что в C# коде используется функция необязательного параметра, указывающая, что параметр numTimes по умолчанию должен иметь значение 1, если для этого параметра не было передано никакого значения.

public string Welcome(string name, int numTimes = 1) {
     return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

Запустите приложение и перейдите по URL-адресу примера (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). Вы можете попробовать различные значения name и numtimes в URL-адресе. Система привязки модели MVC ASP.NET автоматически сопоставляет именованные параметры из строки запроса в адресной строке с параметрами в методе.

В этих примерах контроллер выполняет "VC" части MVC, т. е. представление и контроллер работают. Контроллер возвращает HTML напрямую. Обычно вы не хотите, чтобы контроллеры возвращали HTML напрямую, так как это очень громоздкий для кода. Вместо этого мы обычно используем отдельный файл шаблона представления для создания ответа HTML. Давайте посмотрим, как это можно сделать.