Here we will learn Asp.net MVC Routing with an example.
Routing is a process of mapping the controller and action method through which a
view is use for user as an output. Basically Routing work for an URL or we it is a Restful URL.
This URL is understand at the Run time means when
controller loads and execute action method then t decide URL or view that which
screen have to show to user. Whenever a user make a request related to page then
it load the page then it transfer this page request to the user’s browser via all the page life cycle. Here .aspx page and .aspx.cs page both are bind with
this so when it render user request then this asp.net MVC load both the pages.
Here we will understand Asp.net MVC Segment, ASP.Net MVC 3 type of Segment
- Controller
Segment
- Action
Segment
- Parameter
Segment
In your application app_start
folder you will see a class as “RouteConfig.cs” class contain a function
as ” RegisterRoutes” Right click on this and go to this definition .
RouteConfig.cs method
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
|
When you will go on this
method this will go to Register
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication
{
public class RouteConfig
{
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 }
);
}
}
}
|
Here it
contain default controller as Home
and action as Index and here parameter
as optional you can change all these
thing means you can call your method which is created in your controller , you
also can change your controller as I did in “Controller in MVC application” tutorial.
Controller Segment : - Controller is basically a view name that is
used to show the data to the user , it is used to handling user
request and response. We can create our controller , these controller are
stored in Controller class , for example we create HomeController.cs. All the controller are inherited from the base controller class.
This home controller class contain
two type controls As index and about
using System.Web.Mvc;
namespace MVCController { public class HomeController : Controller { public ActionResult Index() {
return View();
}
public ActionResult About() {
return View();
}
} } |
Action Segment : - You can follow this link for this “Action Result and action method”
Parameter Segment : - you can follow this
link “Controller in MVC”
Asp.net MVC Routing : - Routing is the most important feature of
Asp.net MVC , because this the modal which is responsible for mapping for user
request and for response to specific controller and method.
This routing data is filled in Application_start event
(means this method contain “.RegisterRoutes(RouteTable.Routes); “ ) it
uses Route table object for filling the data,
Route engine is used to matching the incoming request
and execute action method.
Customizing Routing in ASP.NET MVC
:- we are able customize our default route of execution. Mostly all the MVC application use default route for execution but sometimes we need to customizing this default route. There are some example for customize route,
If URL is date then we need specific format
like 11-05-2015 , if url contain integer ID then we need to customize
this.
Attribute Routing :
- This is a new type of Routing which is introduced in Asp.net MVC 5. Attribute routing uses
attributes for creating Routes. Basically Attribute routing gives us more control
for handling URL by adding routes directly to controller and actions
This Routing should be register
in “RegisterRoutes” method of Global.asax or in RoutCnfig.cs
file. This routing should be configures before the convention based routing
This following code shows us that how to register a Attribute Routing
public
class RouteConfig
{
public static void
RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//Add the following line
routes.MapMvcAttributeRoutes();
//convention based routes
}
}
If we are using both
Attribute routing and convention based routing then actions which are
configured for attribute routing will work as per attribute routes and the
actions which are not configured will work as convention based routes.
Routing Constraints :
- Routing constrains allow us to use validation on the
define route. Routing constrains enable user to prevent for getting route map with the user request
unless specific validation matched.
Ex user request should be
matched with particular route only if ID is parameter and the type is int.
Following is the code for
defining creates routes with the constraints which allow us to integer value as
ID Parameters.
routes.MapRoute("Default", // Route name
"{controller}/{action}/{id}", // Route Pattern
new { controller = "Orders", action = "GetOrder",
id = UrlParameter.Optional }, // Default values for parameters
new { id = @"\d+" } //Restriction for id
);
If we need more complex validation, we can implement "IRouteConstraint" interface
and use Match method to implement logic.
follwoing code creates a custom route constraints by implementing "IrouteConstraint". that checks whether provided parameter is valid or not.
public class DateConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route,
string parameterName, RouteValueDictionary values,
RouteDirection routeDirection)
{
DateTime dt;
return DateTime.TryParseExact(values[parameterName].ToString(),
"yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
}
}
Area Registration :
-
Area is a feature of MVC2. this allows us to create our applications in bgood way. Ex we have billing application we may have
different parts like Billing, Admin, , Order and so on. We will create different Area for each and every part. Every area will contain Views.
we can register specific area by inherting "AreaRegistration" class
following code shows us that how to register Admin Area.
public class HelpDeskAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"admin_default",
"admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
No comments:
Post a Comment