ASP.NET MVC Tutorialprovides basic and advanced concepts of C# for beginners and professionals.

ASP.NET MVC Actions

Back to: ASP.NET MVC Tutorial

In ASP.NET MVC, an action is a method in a controller that handles incoming HTTP requests. Actions are responsible for executing application logic, processing user input, and returning a response to the user, such as a view or data.

Here’s a detailed look at actions in ASP.NET MVC:

1. Action Methods:

  • Action methods are public methods of a controller that can be invoked via a URL request. Each request to the MVC application is mapped to a particular action method of a controller.
  • Naming Convention: By convention, action methods return an ActionResult, but they can return other types like JsonResult, ViewResult, PartialViewResult, etc.

Example:

public class HomeController : Controller
{
 public ActionResult Index()
 {
  return View();
 }
 public ActionResult About()
 {
  return View();
 }
}

In this case:

  • Index() and About() are action methods.
  • A URL like /Home/About will invoke the About action of HomeController.

2. Return Types of Actions:

Action methods can return different types of results depending on the need:

  • ViewResult: Returns an HTML view.

    public ActionResult Index()
    {
     return View();
    }
  • PartialViewResult: Returns a partial view (a section of a view).

    public ActionResult GetPartial()
    {
     return PartialView("_PartialView");
    }
  • JsonResult: Returns JSON data, often used for AJAX requests.

    public JsonResult GetData()
    {
     var data = new { Name = "John", Age = 30 };
     return Json(data, JsonRequestBehavior.AllowGet);
    }
  • RedirectResult: Redirects to another URL.

    public ActionResult RedirectToGoogle()
    {
      return Redirect("https://www.google.com");
    }
  • RedirectToActionResult: Redirects to another action in the same or different controller.

    public ActionResult RedirectToAbout()
    {
      return RedirectToAction("About");
    }
  • ContentResult: Returns a plain string as the response.

    public ActionResult GetContent()
    {
      return Content("Hello, World!");
    }
  • FileResult: Returns a file for download.

    public ActionResult DownloadFile()
    {
      byte[] fileBytes = System.IO.File.ReadAllBytes(@"C:\path\to\file.pdf");
      return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Pdf, "file.pdf");
    }

3. Action Parameters:

  • Actions can accept parameters, which are typically passed via query strings, form values, or route data.

    Example:

    public ActionResult Details(int id)
    {
     // Fetch record using id
     return View();
    }
  • In this example, the id parameter is provided via the URL (e.g., /Home/Details/5).

4. Action Selectors:

Action selectors are attributes used to influence which action method is invoked based on the request.

  • [HttpGet]: Marks an action as responding only to GET requests.

    [HttpGet]
    public ActionResult GetData()
    {
      // Handle GET request
    }
  • [HttpPost]: Marks an action as responding only to POST requests.

    [HttpPost]
    public ActionResult PostData(FormCollection data)
    {
      // Handle POST request
    }
  • [HttpPut] and [HttpDelete]: Similar to [HttpPost], but for handling PUT and DELETE requests respectively.

  • [NonAction]: Marks a method that should not be considered as an action method.

    [NonAction]
    public void HelperMethod()
    {
      // This is not an action
    }

5. Action Filters:

Action filters are attributes that can be applied to action methods (or controllers) to run logic before or after an action executes. Examples include:

  • [Authorize]: Ensures that the user is authenticated.

    [Authorize]
    public ActionResult SecurePage()
    {
      return View();
    }
  • [OutputCache]: Caches the output of an action.

    [OutputCache(Duration = 60)]
    public ActionResult CachedPage()
    {
      return View();
    }
  • [HandleError]: Specifies how to handle errors for an action.

    [HandleError]
    public ActionResult ErrorProne()
    {
      throw new Exception("An error occurred");
    }

6. Asynchronous Actions:

Action methods can be made asynchronous using async and await to improve performance for long-running tasks.

Example:

public async Task GetDataAsync()
{
  var data = await GetDataFromDatabaseAsync();
  return Json(data, JsonRequestBehavior.AllowGet);
}

7. Action Overloading:

Multiple action methods can have the same name, but they must differ in the parameters they accept or the request type (e.g., GET vs. POST).

Example:

[HttpGet]
public ActionResult Edit(int id)
{
  // GET the data for editing return View();
}
[HttpPost]
public ActionResult Edit(int id, FormCollection data)
{
  // POST the updated data
  return RedirectToAction("Index");
}

8. Routing and Action:

The MVC routing system determines which controller and action method to invoke based on the URL pattern. You can define routes in the RouteConfig class.

Example Route:

routes.MapRoute
(
  name: "Default",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

In this default route, a URL like /Products/Details/5 maps to the Details action of the ProductsController with an id of 5.


In summary, actions in ASP.NET MVC are the core mechanism by which requests are processed and responses are returned. They are highly flexible, allowing for different return types, parameter passing methods, and response formats (e.g., views, JSON, files).

Scroll to Top