Создание действия (VB)
от Майкрософт
Узнайте, как добавить новое действие в контроллер MVC ASP.NET. Узнайте о требованиях к методу, который должен быть действием.
Цель этого руководства — объяснить, как можно создать новое действие контроллера. Вы узнаете о требованиях метода действия. Вы также узнаете, как предотвратить предоставление метода в качестве действия.
Добавление действия в контроллер
Вы добавляете новое действие в контроллер путем добавления нового метода в контроллер. Например, контроллер в листинге 1 содержит действие с именем Index() и действие с именем SayHello(). Оба метода предоставляются в виде действий.
Листинг 1. Controllers\HomeController.vb
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index() As ActionResult
Return View()
End Function
Function SayHello() As String
Return "Hello!"
End Function
End Class
Чтобы быть подверженным вселенной в качестве действия, метод должен соответствовать определенным требованиям:
- Метод должен быть открытым.
- Метод не может быть статическим методом.
- Метод не может быть методом расширения.
- Метод не может быть конструктором, методом получения или методом задания.
- Метод не может иметь открытые универсальные типы.
- Метод не является методом базового класса контроллера.
- Метод не может содержать параметры ref или out .
Обратите внимание, что нет ограничений на тип возвращаемого значения действия контроллера. Действие контроллера может возвращать строку, значение DateTime, экземпляр класса Random или void. Платформа ASP.NET MVC преобразует любой тип возвращаемого значения, который не является результатом действия, в строку и отрисовывает строку в браузере.
При добавлении любого метода, не нарушающего эти требования, в контроллер этот метод предоставляется как действие контроллера. Будьте осторожны здесь. Действие контроллера может вызывать любой пользователь, подключенный к Интернету. Не создавайте, например, действие контроллера DeleteMyWebsite().
Предотвращение вызова открытого метода
Если необходимо создать открытый метод в классе контроллера и вы не хотите предоставлять метод в качестве действия контроллера, можно предотвратить вызов метода с помощью атрибута <NonAction> . Например, контроллер в листинге 2 содержит открытый метод с именем CompanySecrets(), украшенный атрибутом <NonAction> .
Листинг 2. Controllers\WorkController.vb
Public Class WorkController
Inherits System.Web.Mvc.Controller
_
Function CompanySecrets() As String
Return "This information is secret."
End Function
End Class
Если вы попытаетесь вызвать действие контроллера CompanySecrets(), введя /Work/CompanySecrets в адресной строке браузера, вы получите сообщение об ошибке на рис. 1.
Рис. 01. Вызов метода NonAction(Щелкните для просмотра полноразмерного изображения)