In this section, you will learn about the action method of controller class.
All the public methods of a Controller class are called Action methods. They are like any other normal methods with the following restrictions:
Action method must be public. It cannot be private or protected
Action method cannot be overloaded
Action method cannot be a static method.
The following is an example of Index action method of StudentController
Action Method in ASP.NET MVC
Action Method
As you can see in the above figure, Index method is a public method and it returns ActionResult using the View() method. The View() method is defined in the Controller base class, which returns the appropriate ActionResult.
Default Action method:
Every controller can have default action method as per configured route in RouteConfig class. By default, Index is a default action method for any controller, as per configured default root as shown below.
Default Route:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{name}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
However, you can change the default action name as per your requirement in RouteConfig class.
ActionResult:
MVC framework includes various result classes, which can be return from an action methods. There result classes represent different types of responses such as html, file, string, json, javascript etc. The following table lists all the result classes available in ASP.NET MVC.
The Index() method of StudentController in the above figure uses View() method to return ViewResult (which is derived from ActionResult). The View() method is defined in base Controller class. It also contains different methods, which automatically returns particular type of result as shown in the below table.
Action method Parameters:
Every action methods can have input parameters as normal methods. It can be primitive data type or complex type parameters as shown in the below example.
Example: Action method parameters
[HttpPost]
public ActionResult Edit(Student std)
{
// update student to the database
return RedirectToAction("Index");
}
[HttpDelete]
public ActionResult Delete(int id)
{
// delete student from the database whose id matches with specified id
return RedirectToAction("Index");
}
Action method parameters can be Nullable type.
By default, the values for action method parameters are retrieved from the request's data collection. The data collection includes name/values pairs for form data or query string values or cookie values. Model binding in ASP.NET MVC automatically maps the URL query string or form data collection to the action method parameters if both names are matching. Visit model binding section for more information on it.
All the public methods of a Controller class are called Action methods. They are like any other normal methods with the following restrictions:
Action method must be public. It cannot be private or protected
Action method cannot be overloaded
Action method cannot be a static method.
The following is an example of Index action method of StudentController
Action Method in ASP.NET MVC
Action Method
As you can see in the above figure, Index method is a public method and it returns ActionResult using the View() method. The View() method is defined in the Controller base class, which returns the appropriate ActionResult.
Default Action method:
Every controller can have default action method as per configured route in RouteConfig class. By default, Index is a default action method for any controller, as per configured default root as shown below.
Default Route:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{name}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
However, you can change the default action name as per your requirement in RouteConfig class.
ActionResult:
MVC framework includes various result classes, which can be return from an action methods. There result classes represent different types of responses such as html, file, string, json, javascript etc. The following table lists all the result classes available in ASP.NET MVC.
Result Class | Description |
---|---|
ViewResult | Represents HTML and markup. |
EmptyResult | Represents No response. |
ContentResult | Represents string literal. |
FileContentResult/ FilePathResult/ FileStreamResult | Represents the content of a file |
JavaScriptResult | Represent a JavaScript script. |
JsonResult | Represent JSON that can be used in AJAX |
RedirectResult | Represents a redirection to a new URL |
RedirectToRouteResult | Represent another action of same or other controller |
PartialViewResult | Returns HTML from Partial view |
HttpUnauthorizedResult | Returns HTTP 403 status |
The Index() method of StudentController in the above figure uses View() method to return ViewResult (which is derived from ActionResult). The View() method is defined in base Controller class. It also contains different methods, which automatically returns particular type of result as shown in the below table.
Result Class |
Description |
Base Controller method |
---|---|---|
ViewResult | Represents HTML and markup. | View() |
EmptyResult | Represents No response. | |
ContentResult | Represents string literal. | Content() |
FileContentResult, FilePathResult, FileStreamResult |
Represents the content of a file | File() |
JavaScriptResult | Represent a JavaScript script. | JavaScript() |
JsonResult | Represent JSON that can be used in AJAX | Json() |
RedirectResult | Represents a redirection to a new URL | Redirect() |
RedirectToRouteResult | Represent another action of same or other controller | RedirectToRoute() |
PartialViewResult | Returns HTML | PartialView() |
HttpUnauthorizedResult | Returns HTTP 403 status |
Action method Parameters:
Every action methods can have input parameters as normal methods. It can be primitive data type or complex type parameters as shown in the below example.
Example: Action method parameters
[HttpPost]
public ActionResult Edit(Student std)
{
// update student to the database
return RedirectToAction("Index");
}
[HttpDelete]
public ActionResult Delete(int id)
{
// delete student from the database whose id matches with specified id
return RedirectToAction("Index");
}
Action method parameters can be Nullable type.
By default, the values for action method parameters are retrieved from the request's data collection. The data collection includes name/values pairs for form data or query string values or cookie values. Model binding in ASP.NET MVC automatically maps the URL query string or form data collection to the action method parameters if both names are matching. Visit model binding section for more information on it.