Skip to main content

Контролери в MVC

Контролери в Действие

Добре дошли в втората лекция от нашия курс по MVC в C#! Днес ще разгледаме един от най-важните компоненти в MVC архитектурата – контролерите. Контролерите играят ключова роля в управлението на потребителските заявки, рутирането и връщането на изгледи.

Управление на Потребителски Заявки

  • Задачата на Контролера: Контролерите служат като мост между потребителските заявки и останалата част от приложението. Те приемат входа от потребителите, обработват го (често чрез взаимодействие с модели) и връщат подходящ изглед.

  • Пример за Контролер:

public class HomeController : Controller {
public IActionResult Index() {
return View();
}
}

Рутиране и Методи на Контролера

  • Рутиране: ASP.NET Core използва мощни рутиращи механизми, които дефинират как заявките се съпоставят с конкретни контролери и техните действия.

  • Методи на Контролера: Всеки контролер може да съдържа множество "действия" или методи, които отговарят на различни маршрути.

public class ProductController : Controller {
public IActionResult Details(int id) {
// Логика за взимане на детайли за продукт
return View(product);
}
}

Връщане на Изгледи и Други Типове Резултати

Изгледи (Views)

  • Контролерите в MVC използват Razor шаблони за генериране на HTML, който се изпраща към клиента. Това представлява основния начин за връщане на отговори към потребителя.
  • Пример за връщане на изглед:
    public IActionResult Index() {
    return View();
    }

JSON Резултати

  • JsonResult се използва за връщане на JSON данни, което е особено полезно при създаването на API или AJAX заявки.
  • Пример за JSON резултат:
    public IActionResult GetProduct(int id) {
    var product = productService.GetProductById(id);
    return Json(product);
    }

Редирект Резултати

  • RedirectResult или RedirectToActionResult се използват за пренасочване на потребителя към друг URL или контролерен метод.
  • Пример за пренасочване:
    public IActionResult SaveProduct(Product product) {
    // Логика за запазване на продукта
    return RedirectToAction("Index");
    }

Файлови Резултати

  • FileResult се използва за изпращане на файлове към клиента.
  • Пример за връщане на файл:
    public IActionResult DownloadReport() {
    byte[] fileBytes = reportService.GenerateReport();
    return File(fileBytes, "application/pdf", "MonthlyReport.pdf");
    }

Останали Резултати

  • ASP.NET Core MVC предлага и други видове резултати като ContentResult за изпращане на прост текст, NotFoundResult за изпращане на HTTP 404 отговор и т.н.

Видове заявки

Контролерите в MVC не само управляват потребителските заявки, но също така отговарят на различни HTTP методи, които определят естеството на заявката. Нека разгледаме как контролерите обработват различните HTTP методи:

1. GET Заявки

  • Използване: GET заявките се използват за извличане на информация от сървъра.
  • Пример:
[HttpGet]
public IActionResult Index() {
return View();
}

2. POST Заявки

  • Използване: POST се използва за изпращане на данни към сървъра, например при създаване на нов ресурс.
  • Пример:
[HttpPost]
public IActionResult Create(Product product) {
// Логика за създаване на продукт
return RedirectToAction("Index");
}

3. PUT Заявки

  • Използване: PUT се използва за актуализиране на съществуващ ресурс на сървъра.
  • Пример:
[HttpPut]
public IActionResult Update(int id, Product product) {
// Логика за актуализация на продукт
return NoContent();
}

4. DELETE Заявки

  • Използване: DELETE методът се използва за изтриване на ресурс от сървъра.
  • Пример:
[HttpDelete]
public IActionResult Delete(int id) {
// Логика за изтриване на продукт
return NoContent();
}

Заключение

  • Контролерите са фундаментална част от всяко MVC приложение. Те са отговорни за управление на заявките, рутирането и връщането на подходящи изгледи. В следващата лекция ще разгледаме как да работим с форми и да извършваме валидация на данните в контекста на MVC.
  • Разбирането на различните HTTP методи и тяхната употреба в контролерите е ключово за създаването на мощни и гъвкави уеб приложения и API-та. В следващата лекция ще разгледаме работата с форми и валидация на данни, където често се използват POST и GET заявки.