Контроллер – объект, получающий от пользователя данные, обрабатывающий их и, если нужно, посылающий обратно представление.
Соглашение о названии
site/Home приведет к HomeController, вызвав метод Index
site/Home/Buy приведет к конкретному методу контроллера HomeController
1 Способ реализации контроллера
Технически контроллер это обычный класс, который наследуется от базового класса System.Web.Mvc.Controller. В свою очередь класс Controller реализует абстрактный базовый класс ControllerBase, а через него и интерфейс IController. Таким образом, формально, чтобы создать свой класс контроллера, достаточно создать класс, реализующий интерфейс IController и имеющий в имени суффикс Controller.
Интерфейс IController
1 2 3 4 |
public interface IController { void Execute(RequestContext requestContext); } |
Попробуем реализовать его
1 2 3 4 5 6 7 8 9 10 11 12 |
namespace firstAspApp.Controllers { public class MyController : IController { public void Execute(RequestContext requestContext) { string ip = requestContext.HttpContext.Request.UserHostAddress; var response = requestContext.HttpContext.Response; response.Write("<h2>Ваш IP-адрес: " + ip + "</h2>"); } } } |
В адресной строке обратимся к My
2 Способ реализации контроллера
Сделаем наследника от класса Controller
1 2 3 4 5 6 7 |
public class SampleController : Controller { public ActionResult Index() { return View(); } } |
Добавим также представление для этого контроллера
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> <h1>hello</h1> </div> </body> </html> |
И, у нас получается такая картинка…
3 Способ реализации контроллера
На папке Controllers – > Add -> Controller
Если выбрать первый пункт меню, то создастся новый файл с выбранными именем контроллера
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace firstAspApp.Controllers { public class AnotherController : Controller { // GET: Another public ActionResult Index() { return View(); } } } |
Можно также добавить к нему представление через правую кнопку мыши на слове AnotherController и вызвать в браузере через /Another/Index()