ASP .Net MVC C# 中的 NonActionAttribute 有何意义?

csharpserver side programmingprogramming更新于 2025/9/30 16:52:17

当我们想要在控制器中使用公共方法,但又不想将其视为 Action 方法时,可以使用 NonAction 属性。Action 方法是控制器中的公共方法,可以通过 URL 调用。因此,默认情况下,如果控制器中存在任何公共方法,则可以使用 URL 请求来调用。为了限制对控制器中公共方法的访问,可以使用 NonAction 属性。

现在假设 HomeController 有两个公共方法 MyMethod1 和 MyMethod2。

Controller

示例

using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
   public class HomeController : Controller{
      public string MyMethod1(){
         return "<h1>My Method 1 Invoked</h1>";
      }
      public string MyMethod2(){
         return "<h1>My Method 2 Invoked</h1>";
      }
   }
}

让我们使用以下 URL 调用 HomeController 中的这两个方法。

http://localhost:59146/Home/MyMethod1

http://localhost:59146/Home/MyMethod2

假设 MyMethod2 用于某些内部用途,我们不希望通过 URL 请求调用它。为此,我们必须使用 NonAction 属性对其进行修饰。

Controller

示例

using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
   public class HomeController : Controller{
      public string MyMethod1(){
         return "<h1>My Method 1 Invoked</h1>";
      }
      [NonAction]
      public string MyMethod2(){
         return "<h1>My Method 2 Invoked</h1>";
      }
   }
}

以下是执行 MyMethod2 非操作的输出。

输出


相关文章