Создание контроллера (C#)Creating a Controller (C#)

по Стивен Вальтерby Stephen Walther

В этом руководстве Стивен Вальтер демонстрирует, как можно добавить контроллер в приложение ASP.NET MVC.In this tutorial, Stephen Walther demonstrates how you can add a controller to an ASP.NET MVC application.

Цель этого учебника — объяснить, как можно создавать новые контроллеры MVC ASP.NET.The goal of this tutorial is to explain how you can create new ASP.NET MVC controllers. Вы узнаете, как создавать контроллеры с помощью меню добавления контроллера в Visual Studio, а также путем создания файла класса вручную.You learn how to create controllers both by using the Visual Studio Add Controller menu option and by creating a class file by hand.

Использование команды меню "добавить контроллер"Using the Add Controller Menu Option

Самый простой способ создать новый контроллер — щелкнуть правой кнопкой мыши папку Controllers в окне обозреватель решений Visual Studio и выбрать пункт меню Добавить, контроллер (см. рис. 1).The easiest way to create a new controller is to right-click the Controllers folder in the Visual Studio Solution Explorer window and select the Add, Controller menu option (see Figure 1). При выборе этого пункта меню открывается диалоговое окно Добавление контроллера (см. рис. 2).Selecting this menu option opens the Add Controller dialog (see Figure 2).

диалоговом окне «Создание проекта»The New Project dialog box

Рис. 01. Добавление нового контроллера (щелкните, чтобы просмотреть изображение с полным размером)Figure 01: Adding a new controller(Click to view full-size image)

диалоговом окне «Создание проекта»The New Project dialog box

Рис. 02. диалоговое окно добавления контроллера (щелкните, чтобы просмотреть изображение с полным размером)Figure 02: The Add Controller dialog (Click to view full-size image)

Обратите внимание, что первая часть имени контроллера выделена в диалоговом окне Добавление контроллера .Notice that the first part of the controller name is highlighted in the Add Controller dialog. Имя каждого контроллера должно заканчиваться контроллеромсуффикса.Every controller name must end with the suffix Controller. Например, можно создать контроллер с именем продуктконтроллер , но не контроллер с именем Product.For example, you can create a controller named ProductController but not a controller named Product.

Если вы создаете контроллер, в котором отсутствует суффикс контроллера , вы не сможете вызвать контроллер.If you create a controller that is missing the Controller suffix then you won't be able to invoke the controller. Не делать этого — я не сталкивался с бесчисленным временем жизни моего жизненного цикла после выполнения этой ошибки.Don't do this -- I've wasted countless hours of my life after making this mistake.

Листинг 1. Контроллерс\продуктконтроллер.КСListing 1 - Controllers\ProductController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    public class ProductController : Controller
    {
        //
        // GET: /Product/

        public ActionResult Index()
        {
            return View();
        }
    }
}

Контроллеры всегда должны создаваться в папке Controllers.You should always create controllers in the Controllers folder. В противном случае вы будете нарушать соглашения ASP.NET MVC, и другие разработчики будут иметь более трудное понимание своего приложения.Otherwise, you'll be violating the conventions of ASP.NET MVC and other developers will have a more difficult time understanding your application.

Методы действий формирования шаблоновScaffolding Action Methods

При создании контроллера у вас есть возможность автоматически создавать, обновлять и подробных методов действий (см. рис. 3).When you create a controller, you have the option to generate Create, Update, and Details action methods automatically (see Figure 3). При выборе этого параметра создается класс контроллера в листинге 2.If you select this option then the controller class in Listing 2 is generated.

автоматическое создание методов действийCreating action methods automatically

Рис. 03. Автоматическое создание методов действий (щелкните, чтобы просмотреть изображение с полным размером)Figure 03: Creating action methods automatically (Click to view full-size image)

Листинг 2. Контроллерс\кустомерконтроллер.КСListing 2 - Controllers\CustomerController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    public class CustomerController : Controller
    {
        //
        // GET: /Customer/

        public ActionResult Index()
        {
            return View();
        }

        //
        // GET: /Customer/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /Customer/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Customer/Create

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Customer/Edit/5
 
        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /Customer/Edit/5

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}

Эти созданные методы являются методами-заглушками.These generated methods are stub methods. Необходимо добавить собственно логику для создания, обновления и отображения подробных сведений для клиента.You must add the actual logic for creating, updating, and showing details for a customer yourself. Но методы-заглушки предоставляют удобную отправную точку.But, the stub methods provide you with a nice starting point.

Создание класса контроллераCreating a Controller Class

Контроллер MVC ASP.NET — это просто класс.The ASP.NET MVC controller is just a class. Если вы предпочитаете, вы можете проигнорировать удобный набор шаблонов контроллера Visual Studio и создать класс контроллера вручную.If you prefer, you can ignore the convenient Visual Studio controller scaffolding and create a controller class by hand. Выполните следующие действия.Follow these steps:

  1. Щелкните правой кнопкой мыши папку Controllers и выберите пункт меню Добавить, новый элемент и выберите шаблон класса (см. рис. 4).Right-click the Controllers folder and select the menu option Add, New Item and select the Class template (see Figure 4).
  2. Назовите новый класс PersonController.cs и нажмите кнопку Добавить .Name the new class PersonController.cs and click the Add button.
  3. Измените результирующий файл класса таким образом, чтобы класс наследовался от базового класса System. Web. MVC. Controller (см. листинг 3).Modify the resulting class file so that the class inherits from the base System.Web.Mvc.Controller class (see Listing 3).

создания нового классаCreating a new class

Рис. 04. Создание нового класса (щелкните, чтобы просмотреть изображение с полным размером)Figure 04: Creating a new class(Click to view full-size image)

Листинг 3. Контроллерс\персонконтроллер.КСListing 3 - Controllers\PersonController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication1.Controllers
{
    public class PersonController : System.Web.Mvc.Controller
    {
        public string Index()
        {
            return "Hello World!";
        }
    }
}

Контроллер в листинге 3 предоставляет одно действие с именем index (), которое возвращает строку "Hello World!".The controller in Listing 3 exposes one action named Index() that returns the string "Hello World!". Это действие контроллера можно вызвать, запустив приложение и запрашивая URL-адрес следующего вида:You can invoke this controller action by running your application and requesting a URL like the following:

http://localhost:40071/Person

Note

В ASP.NET Development Server используется случайный номер порта (например, 40071).The ASP.NET Development Server uses a random port number (for example, 40071). При вводе URL-адреса для вызова контроллера необходимо указать правильный номер порта.When entering a URL to invoke a controller, you'll need to supply the right port number. Номер порта можно определить, наведя указатель мыши на значок ASP.NET Development Server в области уведомлений Windows (в правом нижнем углу экрана).You can determine the port number by hovering your mouse over the icon for the ASP.NET Development Server in the Windows Notification Area (bottom-right of your screen).