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

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Методы действий (action methods) представляют такие методы контроллера, которые обрабатывают запросы по определенному URL. Например, возьмем проект из предыдущей главы. В нем был определен следующий контроллер:

public class HomeController : Controller
{
    BookContext db = new BookContext();

    public ActionResult Index()
    {
        IEnumerable<Book> books = db.Books;
        ViewBag.Books = books;
        return View();
    }

    [HttpGet]
    public ActionResult Buy(int id)
    {
        ViewBag.BookId = id;
        return View();
    }
    [HttpPost]
    public string Buy(Purchase purchase)
    {
        purchase.Date = DateTime.Now;
        db.Purchases.Add(purchase);
        db.SaveChanges();
        return "Спасибо, " + purchase.Person + ", за покупку!";
    }
}

Здесь методы Index и Buy являются методами действий или просто действиями контроллера. При получении запроса типа /Home/Index контроллер передает обработку запроса действию Index.

Так как запросы бывают разных типов, например, GET и POST, фреймворк ASP.NET MVC позволяет определить тип обрабатываемого запроса для действия, применив к нему соответствующий атрибут: [HttpGet], [HttpPost], [HttpDelete] или [HttpPut]. Так, действие Buy разбито на два метода, по одному для каждого типа запроса.

Однако не все методы контроллера являются методами действий. Методы действий всегда имеют модификатор public. Закрытых приватных методов действий не бывает. Но контроллер может также включать и обычные методы, которые могут использоваться в вспомогательных целях. Например,

[HttpPost]
public string Buy(Purchase purchase)
{
    purchase.Date = getToday();
    db.Purchases.Add(purchase);
    db.SaveChanges();
    return "Спасибо, " + purchase.Person + ", за покупку!";
}
private DateTime getToday()
{
    return DateTime.Now;
}

Соответственно мы не можем отправить из браузера запрос Home/getToday/, потому что метод getToday не является методом действия.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850