Tworzenie akcji (C#)

autor: Microsoft

Dowiedz się, jak dodać nową akcję do kontrolera MVC ASP.NET. Dowiedz się więcej o wymaganiach dotyczących metody, która ma być akcją.

Celem tego samouczka jest wyjaśnienie, jak można utworzyć nową akcję kontrolera. Poznasz wymagania metody akcji. Dowiesz się również, jak zapobiec ujawnieniu metody jako akcji.

Dodawanie akcji do kontrolera

Dodaj nową akcję do kontrolera, dodając nową metodę do kontrolera. Na przykład kontroler na liście 1 zawiera akcję o nazwie Index() i akcję o nazwie SayHello(). Obie metody są widoczne jako akcje.

Lista 1 — Controllers\HomeController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public string SayHello()
        {
            return "Hello!";
        }
    }
}

Aby uwidocznić wszechświat jako działanie, metoda musi spełniać pewne wymagania:

  • Metoda musi być publiczna.
  • Metoda nie może być metodą statyczną.
  • Metoda nie może być metodą rozszerzenia.
  • Metoda nie może być konstruktorem, metodą getter ani ustawiającą.
  • Metoda nie może mieć otwartych typów ogólnych.
  • Metoda nie jest metodą klasy bazowej kontrolera.
  • Metoda nie może zawierać parametrów ref lub out .

Zwróć uwagę, że nie ma żadnych ograniczeń dotyczących zwracanego typu akcji kontrolera. Akcja kontrolera może zwrócić ciąg, DateTime, wystąpienie klasy Random lub void. Struktura ASP.NET MVC przekonwertuje każdy zwracany typ, który nie jest wynikiem akcji w ciągu i renderuje ciąg w przeglądarce.

Po dodaniu dowolnej metody, która nie narusza tych wymagań kontrolera, metoda jest uwidoczniona jako akcja kontrolera. Uważaj tutaj. Akcję kontrolera może wywołać każda osoba połączona z Internetem. Nie należy na przykład tworzyć akcji kontrolera DeleteMyWebsite().

Zapobieganie wywoływaniu metody publicznej

Jeśli musisz utworzyć metodę publiczną w klasie kontrolera i nie chcesz uwidaczniać metody jako akcji kontrolera, możesz uniemożliwić wywoływanie metody przy użyciu atrybutu [NonAction]. Na przykład kontroler na liście 2 zawiera publiczną metodę o nazwie CompanySecrets(), która jest ozdobiona atrybutem [NonAction].

Lista 2 — Controllers\WorkController.cs

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class WorkController : Controller
    {
        [NonAction]
        public string CompanySecrets()
        {
            return "This information is secret.";
        }
    }
}

Jeśli spróbujesz wywołać akcję kontrolera CompanySecrets(), wpisując ciąg /Work/CompanySecrets na pasku adresu przeglądarki, zostanie wyświetlony komunikat o błędzie na rysunku 1.

Wywoływanie metody NonAction

Rysunek 01. Wywoływanie metody NonAction (Kliknij, aby wyświetlić obraz o pełnym rozmiarze)