비액션 속성은 컨트롤러에서 공개 메소드를 원하지만 그것을 액션 메소드로 취급하고 싶지 않을 때 사용됩니다. 작업 메서드는 URL을 사용하여 호출할 수 있는 컨트롤러의 공용 메서드입니다. 따라서 기본적으로 컨트롤러에 공용 메서드가 있는 경우 URL 요청을 사용하여 호출할 수 있습니다. 컨트롤러의 공용 메서드에 대한 액세스를 제한하려면 NonAction 속성을 사용할 수 있습니다.
이제 HomeController에 MyMethod1 및 MyMethod2 공개 메서드가 두 개 있다고 가정해 보겠습니다. .
컨트롤러
예
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에서 두 메서드를 모두 호출해 보겠습니다.
https://localhost:59146/Home/MyMethod1
https://localhost:59146/Home/MyMethod2
MyMethod2가 어떤 내부 목적을 위한 것이고 URL 요청을 사용하여 호출되는 것을 원하지 않는다고 가정해 보겠습니다. 이를 달성하려면 NonActionattribute로 장식해야 합니다.
컨트롤러
예
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 Non Action을 만든 결과입니다.
출력