Home > DeveloperSection > Forums > How routing works in ASP.NET MVC4
Pravesh Singh
Pravesh Singh

Total Post:101

Points:709
Posted on    September-29-2014 12:55 AM

 ASP.NET MVC ASP.NET MVC 
Ratings:


 1 Reply(s)
 761  View(s)
Rate this:

I'm developing an ASP.NET MVC4 application and I'm new. I have two MapRoutes for routing.

 

routes.MapRoute("Char",

                "ABC/Alpha/{number1}",

                 defaults: new { Controller = "ABC", action = "Alpha" });          

 

routes.MapRoute(

            name: "Default",

            url: "{controller}/{action}/{id}",

            defaults: new { controller = "Home", action = "Index",  id=UrlParameter.Optional }

        );

I didn't assign any default value to the number1 in the MapRoutes. But I know it is mandatory because it is in the URL path.

 

If I didn't provide any parameter in the url (when I run the app), I should get an error but I didn't.


Can anyone help me?



Sumit Kesarwani

Total Post:378

Points:2694
Posted on    September-29-2014 1:06 AM

Hi Pravesh, 

The Route path is checked from top to bottom, so in the first case

 

{Controller}/{Action}/{ID}

is passed by you (mention the id is must here) so the First routepath works

 

but Magic you was expecting the second case to throw an error, and it should have because if your Action is like

 

public ActionResult ActionName(int id)

{

//some Code

}

then for sure it would have thrown error like Action

 

"Cannot convert null to 'int' because it is a non-nullable value type"

and i'm Pretty sure your Action will be having either

 

 public ActionResult(int? id)

 {//Some Code here}

or

 

Public ActionResult()

{

//Some Code here

 }


Don't want to miss updates? Please click the below button!

Follow MindStick