You need to modify and add some custom routes to RouteConfig.cs in your App_Start folder. You should have the following default route in the RegisterRoutes method
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
This route means that if you pass it nothing for the controller, the action or the id it will go to /Home/Index/, if you pass it a controller it will got to /Town/Index. If you register the following route BEFORE the default route (they get tried in order, so the default route should always be last)
routes.MapRoute(
name: "Restaurant",
url: "Town/{id}",
defaults: new { controller = "Restaurant", action = "Index", id = UrlParameter.Optional }
);
this will capture any url that has '/Town/' and an integer while still letting '/Town/' by itself go to the Town controller.