Поделиться через


Создание действия (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.

Вызов метода NonAction

Рис. 01. Вызов метода NonAction(Щелкните для просмотра полноразмерного изображения)