Tworzenie akcji (C#)

przez Microsoft

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

Celem tego samouczka jest wyjaśnienie, jak można utworzyć nową akcję kontrolera. Dowiesz się o wymaganiach metody działania. Dowiesz się również, jak zapobiec metoda jest narażona jako akcja.

Dodawanie akcji do kontrolera

Dodaj nową akcję do kontrolera, dodając nową metodę do kontrolera. Na przykład kontroler w wykazie 1 zawiera akcję o nazwie Index() i akcję o nazwie SayHello(). Obie metody są udostępniane 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 być narażonym na działanie wszechświata, 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, metodyą lub ustawiaczem.
  • Metoda nie może mieć otwartych typów ogólnych.
  • Metoda nie jest metodą klasy podstawowej kontrolera.
  • Metoda nie może zawierać parametrów ref lub out.

Należy zauważyć, że nie ma żadnych ograniczeń dotyczących typu zwracanego akcji kontrolera. Akcja kontrolera może zwrócić ciąg, DateTime, wystąpienie Random klasy lub void. Struktura ASP.NET MVC przekonwertuje dowolny typ zwracany, który nie jest wynikiem akcji na ciąg i renderuje ciąg do przeglądarki.

Po dodaniu dowolnej metody, która nie narusza tych wymagań do kontrolera, metoda jest narażona jako akcja kontrolera. Bądź ostrożny tutaj. Akcja kontrolera może być wywoływana przez osoby podłączone do Internetu. Nie należy na przykład tworzyć akcji kontrolera DeleteMyWebsite().

Zapobieganie wywoływaniu metody publicznej

Jeśli chcesz utworzyć metodę publiczną w klasie kontrolera i nie chcesz udostępniać metody jako akcji kontrolera, możesz zapobiec wywoływaniu metody przy użyciu atrybutu [NonAction]. Na przykład kontroler w wykazie 2 zawiera metodę publiczną 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ć companySecrets() działania kontrolera, wpisując /Work/CompanySecrets na pasku adresu przeglądarki, a następnie pojawi się komunikat o błędzie na rysunku 1.

Wywoływanie metody nonaction

Rysunek 01: Wywoływanie metody NonAction(Kliknij, aby wyświetlić obraz pełnowymiarowy)