创建操作 (VB)
了解如何将新操作添加到 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。
- 方法不能具有打开的泛型类型。
- 方法不是控制器基类的方法。
- 方法不能包含 ref 或 out 参数。
请注意,控制器操作的返回类型没有限制。 控制器操作可以返回字符串、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 中收到错误消息。
图 01:调用 NonAction 方法 (单击以查看全尺寸图像)