创建操作 (VB)

Microsoft

了解如何将新操作添加到 ASP.NET MVC 控制器。 了解方法成为操作的要求。

本教程的目的是说明如何创建新的控制器操作。 了解操作方法的要求。 你还将了解如何防止方法作为操作公开。

向控制器添加操作

通过向控制器添加新方法,可以向控制器添加新操作。 例如,清单 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

为了作为一种行动暴露在宇宙中,方法必须满足某些要求:

  • 方法必须是公共的。
  • 方法不能是静态方法。
  • 方法不能是扩展方法。
  • 方法不能是构造函数、getter 或 setter。
  • 方法不能具有打开的泛型类型。
  • 方法不是控制器基类的方法。
  • 方法不能包含 refout 参数。

请注意,控制器操作的返回类型没有限制。 控制器操作可以返回字符串、DateTime、Random 类的实例或 void。 ASP.NET MVC 框架会将任何不是操作结果的返回类型转换为字符串,并将字符串呈现到浏览器。

将不违反这些要求的任何方法添加到控制器时,该方法将作为控制器操作公开。 请小心。 连接到 Internet 的任何人都可以调用控制器操作。 例如,请勿创建 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

如果尝试通过在浏览器的地址栏中键入 /Work/CompanySecrets 来调用 CompanySecrets () 控制器操作,则会在图 1 中收到错误消息。

调用 NonAction 方法

图 01:调用 NonAction 方法 (单击以查看全尺寸图像)