Контроллеры

Содержание

Слайд 2

Цель Ближе познакомиться с возможностями контроллеров. Добавить контроллеры для функций администратора в приложение ArtMusem.

Цель

Ближе познакомиться с возможностями контроллеров.
Добавить контроллеры для функций администратора в приложение

ArtMusem.
Слайд 3

Интерфейс IController Простейший контроллер public interface IController { void Execute(RequestContext requestContext);

Интерфейс IController

Простейший контроллер
public interface IController
{
void Execute(RequestContext requestContext);
}

public class ProtoController: IController
{
public void Execute(System.Web.Routing.RequestContext requestContext)
{
requestContext.HttpContext.Response.Write("Hello, world!");
}
}

Контроллером является любой класс, который:
реализует интерфейс IController
не является обобщенным

Слайд 4

Состав контроллера Методы действий – открытые методы контроллера, которые вызываются по

Состав контроллера

Методы действий – открытые методы контроллера, которые вызываются по web-запросам.
Результаты

действий – объекты-описатели действий. Сами действия будут совершены позднее.
Фильтры – специальные обработчики событий, которые предшествуют или следуют за действиями.

[OutputCache(Duration=600, VaryByParam="*")] // фильтр
public class DemoContriller: Controller
{
public ViewResult ShowGreeting() // метод действия
{
ViewBag.Greeting = "Hello, world!";
return View(); // возвращает результат действия
}
}

Слайд 5

Вход контроллера Методы-действия получают входные данные из контекста и из своих

Вход контроллера

Методы-действия получают входные данные из контекста и из своих

параметров.

Объекты ASP.NET:
Request
Response
Session
Server
User
HttpContext

Параметры метода

Метод действия

Привязка

Контроллер

Методы действий не могут иметь параметры out и ref.

Слайд 6

Объект Request public ActionResult Index() { if (Request.Files.Count > 0) {

Объект Request

public ActionResult Index()
{
if (Request.Files.Count > 0)
{
Stream stream

= Request.Files["111.png"].InputStream;
}
string command = Request.RequestType; // GET, POST
string url = Request.Url.AbsoluteUri; // http://localhost:52262/
string agent = Request.UserAgent;
// Mozilla/5.0 (Windows NT 6.1; WOW64)
// AppleWebKit/537.22 (KHTML, like Gecko)
// Chrome/25.0.1364.172
// Safari/537.22
}
Слайд 7

Объект Response public ActionResult Index() { Response.Charset = "utf-8"; Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetExpires(DateTime.Now.AddSeconds(5));

Объект Response

public ActionResult Index()
{
Response.Charset = "utf-8";
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(5));

Response.Output.WriteLine("Текущее время: " + DateTime.Now);
Response.StatusCode = 404;
return null;
}

Посмотреть заголовки в браузере Chrome: F12 / Network / Headers.

Слайд 8

Объект Session Session["key"] = "Любые данные";

Объект Session
Session["key"] = "Любые данные";

Слайд 9

Объект Server public ActionResult Index() { string path = Server.MapPath("~/"); //

Объект Server

public ActionResult Index()
{
string path = Server.MapPath("~/"); // "D:\\111\\MvcController\\MvcController\\"
int

timeout = Server.ScriptTimeout; // 110
Server.ClearError();
Exception lastError = Server.GetLastError(); // null
string encodedStr = Server.HtmlEncode("