Sobes.tech
Junior

Opowiedz o metodzie ASP i jej zastosowaniu w zapytaniach.

sobes.tech AI

Odpowiedź od AI

ASP.NET Web Forms i MVC używają metod żądań HTTP (GET, POST, PUT, DELETE) do komunikacji z serwerem. GET służy do pobierania danych, POST do wysyłania danych, PUT do aktualizacji, a DELETE do usuwania. W ASP.NET MVC metody kontrolerów mogą być oznaczone atrybutami HttpGet, HttpPost, HttpPut, HttpDelete, aby kierować żądania odpowiednich typów. Bez jawnego atrybutu domyślnie używany jest GET.

Przykład w ASP.NET MVC:

// Kontroler do obsługi produktów
public class ProductsController : Controller
{
    // Metoda do pobierania listy produktów (obsługa żądań GET)
    [HttpGet]
    public ActionResult Index()
    {
        // Logika pobierania danych
        return View();
    }

    // Metoda do tworzenia nowego produktu (obsługa żądań POST)
    [HttpPost]
    public ActionResult Create(Product product)
    {
        // Logika zapisywania danych
        if (ModelState.IsValid)
        {
            // Zapisz produkt
            return RedirectToAction("Index");
        }
        return View(product);
    }

    // Metoda do aktualizacji produktu (obsługa PUT, zwykle przez API lub niestandardowe trasy)
    // W standardowym MVC zwykle używa się POST do aktualizacji przez formularz
    // [HttpPut]
    // public ActionResult Update(int id, Product product) { ... }

    // Metoda do usuwania produktu (obsługa DELETE, zwykle przez API lub niestandardowe trasy)
    // W standardowym MVC zwykle używa się POST do usuwania przez formularz lub GET z potwierdzeniem
    // [HttpDelete]
    // public ActionResult Delete(int id) { ... }
}

// Przykład formularza w widoku dla żądania POST
@model YourNamespace.Product // Jeśli używany jest model

@using (Html.BeginForm("Create", "Products", FormMethod.Post))
{
    @Html.AntiForgeryToken() // Ochrona przed XSRF

    <div class="form-group">
        @Html.LabelFor(model => model.Name)
        @Html.EditorFor(model => model.Name, new { htmlAttributes = new { class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
    </div>

    <div class="form-group">
        <input type="submit" value="Utwórz" class="btn btn-primary" />
    </div>
}

W kontekście ASP (Active Server Pages, technologia przestarzała przed .NET), "metoda ASP" mogła odnosić się do wbudowanych obiektów żądania, takich jak Request.Form (dla danych POST) lub Request.QueryString (dla danych GET). W ASP.NET są one enkapsulowane w obiektach HttpRequest.

W ASP.NET Core te same zasady metod HTTP są stosowane, ale routing i obsługa żądań są realizowane za pomocą middleware i atrybutów routingu/metod HTTP na metodach kontrolerów lub obsługiwaczach minimalnych API.