Back to: ASP.NET MVC Tutorial For Beginners and Professionals
Non-Action Selector in ASP.NET MVC Application
In this article, I am going to discuss the Non-Action Selector in ASP.NET MVC Application with Examples. Please read our previous article before proceeding to this article as we are going to work on the same example that we worked on in our previous two articles. In our previous article, we discussed the Action Verb Action Selector in ASP.NET MVC Application with examples.
Why do we need a Non-Action Selector in the ASP.NET MVC Application?
By default, in ASP.NET MVC, an action method is a public method in a controller that can be invoked using a URL request. But in some scenarios, we need to restrict the public methods of a controller to be invoked by a URL i.e. we don’t want the action method to be invoked using URL request.
To restrict access to the public methods in a controller, we need to decorate the action method with the Non-Action attribute. The Non-Action is another built-in Action Selector Attribute, which indicates that a public method of a Controller is not an action method. It is used when we want that method shouldnāt be treated as an action method.
Understanding Non-Action Attribute in the ASP.NET MVC Application with an Example.
public class HomeController : Controller { [HttpGet] public string Method1() { return "<h1>Method 1 Invoked</h1>"; } [HttpGet] public string Method2() { return "<h1>Method 2 Invoked</h1>"; } }
As you can see in the above code, we have 2 public methods i.e. Method1() and Method2() in HomeController. As the above two methods are public methods, so, we can access these two methods using the below URL.
Method1Ā can be invoked using URLĀ /Home/Method1
Method2Ā can be invoked using URLĀ /Home/Method2
Let’s sayĀ Method2() is doing some internal work, and we don’t want it to be invoked using a URL request. To achieve this, we need to decorate Method2() with the NonAction attribute as shown in the below code.
[NonAction] public string Method2() { return "<h1>Method 2 Invoked</h1>"; }
Now, if we navigate to URLĀ /Home/Method2, we will get an error saying – The resource cannot be found as shown in the image below.
Another way to restrict access to methods in a controller is by making them private.Ā
private string Method2() { return "<h1>Method 2 Invoked</h1>"; }
In general, it’s a bad design to have a public method in a controller that is not an action method. If we have any such method for performing business calculations, it should be somewhere in the model and not in the controller.Ā However, if for some reason, if you want to have public methods in a controller and you don’t want to treat them as actions, then use the Non-Action Selector Attribute in ASP.NET MVC Application.Ā
In the next article, I am going to discuss Data Annotation in the ASP.NET MVC Application with Examples. In this article, I try to explain the Non-Action Selector in ASP.NET MVC Application with Example. I hope this Non-Action Selector in the ASP.NET MVC article will help you with your need. I would like to have your feedback. Please post your feedback, question, or comments about this article.
Registration Open For New Online Training
Enhance Your Professional Journey with Our Upcoming Live Session. For complete information on Registration, Course Details, Syllabus, and to get the Zoom Credentials to attend the free live Demo Sessions, please click on the below links.