Why we use it as a new {controller = "Home", action = "Index", id = ""}
Basically initialize the route with default values. The values that you pass to the MapRoute method, converted to an IDictionary<string, object> for later retrieval.
Is this is a fixed format?
No, you can omit or add more values according to your url. The values you specify by default will be used for the search.
For example, you can set the name of the Search route as follows:
routes.MapRoute( name: "Search", url: "{controller}/{action}/{searchId}", defaults: new {controller = "Account", action = "Login", searchId = UrlParameter.Optional} );
How can a sequence of CLRs be interprt parameter?
By adding them to the dictionary (RouteValueDictionary will be accurate).
a. Why do we decorate the controller, action or identifier inside the bracket {}?
Short answer, this convention ... long answer, according to MSDN, excerpts from MSDN Article
In the URL pattern, you define placeholders by enclosing them in curly braces ({and also}). You can define more than one placeholder in a segment, but they must be separated by a literal value. For example, {language} - {country} / {action} is a valid route pattern. However, {language} {country} / {action} is not a valid pattern because there is a literal value or delimiter between placeholders. Therefore, routing cannot determine where to separate the value for the placeholder language from the value for the placeholder country of the country.
b. Is there any match in between URL specify and defaults?
Yes, the default values for placeholders in the URL. If you add a default value, the default value will be ignored. The default value is used if the value for this parameter is not included in the URL.
For more information, I will point you to this excellent one .
Hope this helps.