+91-90427 10472
         
Dot net training in Chennai -Maria Academy

Routing in ASP.NET

23 Jul 2023

Routing in ASP.NET is the process of sending HTTP requests to the appropriate controller. Whether a request should be forwarded to the controller for processing or not is up to the MVC middleware. This choice is made by the middleware based on the URL and some configuration data.

In other words, routing in ASP.NET is a mechanism that allows you to define URL patterns and map them to specific resources or handlers in your web application. It enables you to create clean, user-friendly URLs that are more meaningful and descriptive than traditional query-string based URLs.

Routing is an essential part of the ASP.NET MVC (Model-View-Controller) framework and the newer ASP.NET Core framework, although the concept remains similar across both technologies.

Routing’s main goal is to separate your web application’s physical file structure from its URL structure. In the past, URLs in web applications were linked to particular physical server files (for example, a particular.aspx page). However, routing gives you more flexibility when defining the URLs for your web application since it allows you to specify URL patterns and link them to controllers and actions (in MVC) or endpoints (in ASP.NET Core).

To address various scenarios and requirements, ASP.NET MVC supports a number of different forms of routing. The primary routing types that ASP.NET MVC supports are listed below:

Conventional Routing: In ASP.NET MVC, conventional routing is the default routing method. The mapping of URL segments to names of controller and action method uses a pattern-based technique. A URL pattern typically looks like this: “controller/action/id,” where “controller” and “action” stand in for the names of the controller and action method, respectively. It is possible to omit the “id” parameter.

Here’s a basic example of routing in ASP.NET MVC:

// In the RouteConfig.cs file (MVC)
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
    routes.MapRoute(
        name: “Default”,
        url: “{controller}/{action}/{id}”,
        defaults: new {controller = “Home”, action = “Index”, id = UrlParameter.Optional }
    );
}

In this example, a default route is defined with a pattern like “{controller}/{action}/{id}”. When a user visits a URL like “example.com/Home/Index”, the routing system will map it to the “Index” action method in the “HomeController” within the MVC application. The “id” parameter is optional and can be omitted in the URL.

ASP.NET Core uses a similar concept of routing, but the syntax and configuration are slightly different. Here’s a basic example of routing in ASP.NET Core:

// In the Startup.cs file (ASP.NET Core)
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Other middleware configurations…
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: “default”,
            pattern: “{controller=Home}/{action=Index}/{id?}”
        );
    });
}

In this example, the UseRouting() method is called to enable routing, and then MapControllerRoute() is used to define the default route pattern.

Routing plays a crucial role in creating clean and SEO-friendly URLs, improving the maintainability of your web application, and supporting more structured and organized code through the proper separation of concerns.

Attribute Routing: Using attributes, you may build routes directly on the controller and action methods. This method gives you more fine-grained control over single action routing and allows you to build unique routes for individual actions. When you have non-conventional URL patterns or want more descriptive URLs, attribute routing comes in handy.

In ASP.NET MVC, here’s an example of attribute routing:

// Controller with attribute routing
[RoutePrefix(“products”)]
public class ProductController : Controller
{
    [Route(“”)]
    public ActionResult Index()
    {
        // Action logic
    }
    [Route(“{id}”)]
    public ActionResult Details(int id)
    {
        // Action logic
    }
}

Area Routing: Areas are used in ASP.NET MVC to partition related portions of a web application into different modules. Controllers, views, and models can be customised for each region. Area-specific routing can be used with areas to control routes inside that specified area. When dealing with large and complex applications, this helps to maintain clean and organised code.

Custom Route Constraints: Custom route constraints let you specify extra requirements that a route must meet in order to be accepted as a match. Implementing the IRouteConstraint interface enables you to create unique route constraints. For instance, you can build a custom constraint to guarantee that the “id” argument adheres to a particular format or fits within a given range.

Catch-All Routes: Any URL that doesn’t match one of the other defined routes is matched using catch-all routes. When dealing with specific URL patterns that don’t suit the typical route patterns, this is useful.

With these multiple routing systems in ASP.NET MVC, you may handle a variety of URL patterns, create custom routes, and set up your application’s URLs anyway you see fit.

Social tagging: > > > >