Добавление контроллера. Основные сведения о ASP.NET MVC

Скотт Хансельман (Scott Hanselman)

Примечание

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

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

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

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

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

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

AddControllerRightClick

Присвойте новому контроллеру имя HelloWorldController и нажмите кнопку Добавить.

Диалоговое окно

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

HelloWorldControllerCode

Создайте два новых метода, которые выглядят следующим образом в новом открытом классе HelloWorldController. В качестве примера мы вернем строку HTML непосредственно из нашего контроллера.

using System.Web.Mvc;
 
namespace Movies.Controllers
{
    public class HelloWorldController : Controller
    {
        public string Index()
        {
            return "This is my default action...";      
        }
        
        public string Welcome()
        {  
            return "This is the Welcome action method...";
        }  
    }
}

Контроллер называется HelloWorldController, а новый метод — Index. Запустите приложение снова, как и раньше (нажмите кнопку воспроизведения или клавишу F5). После запуска браузера измените путь в адресной строке, где http://localhost:xx/HelloWorld xx — это любой номер, выбранный компьютером. Теперь ваш браузер должен выглядеть, как на снимок экрана ниже. В приведенном выше методе мы вернули строку, переданную в метод с именем Content. Мы сказали, что система просто возвращает некоторый HTML, и это произошло!

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

/[Контроллер]/[Имя_действия]/[Параметры]

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

Это действие по умолчанию

Теперь перейдем к разделу http://localhost:xx/HelloWorld/Welcome. Теперь метод Welcome выполнил и вернул свою HTML-строку.

Опять же, /[Controller]/[ActionName]/[Parameters], поэтому контроллер — HelloWorld, а в данном случае — метод Welcome. Мы еще не сделали параметры.

Это метод действия Welcome

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

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

Запустите приложение и перейдите http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4 к разделу Изменение значения имени и числовых значений по своему типу. Система автоматически сопоставляет именованные параметры из строки запроса в адресной строке с параметрами в методе .

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