Action Selectors

Action selector is the attribute that can be applied to the action methods. It helps routing engine to select the correct action method to handle a particular request. MVC 5 includes the following action selector attributes:

  1. ActionName
  2. NonAction
  3. ActionVerbs

ActionName

ActionName attribute allows us to specify a different action name than the method name. Consider the following example.

Example: ActionName
public class StudentController : Controller
{
    public StudentController()
    {

    }
       
    [ActionName("find")]
    public ActionResult GetById(int id)
    {
        // get student from the database 
        return View();
    }
}

In the above example, we have applied ActioName("find") attribute to GetById action method. So now, action name is "find" instead of "GetById". This action method will be invoked on http://localhost/student/find/1 request instead of http://localhost/student/getbyid/1 request.

NonAction

NonAction selector attribute indicates that a public method of a Controller is not an action method. Use NonAction attribute when you want public method in a controller but do not want to treat it as an action method.

For example, the GetStudent() public method cannot be invoked in the same way as action method in the following example.

Example: NonAction
public class StudentController : Controller
{
    public StudentController()
    {

    }
   
    [NonAction]
    public Student GetStudnet(int id)
    {
        return studentList.Where(s => s.StudentId == id).FirstOrDefault();
    }
}
Points to Remember :
  1. MVC framework routing engine uses Action Selectors attributes to determine which action method to invoke.
  2. Three action selectors attributes are available in MVC 5
       - ActionName
       - NonAction
       - ActionVerbs
  3. ActionName attribute is used to specify different name of action than method name.
  4. NonAction attribute marks the public method of controller class as non-action method. It cannot be invoked.