Настройка пользовательского маршрута
В вашем файле global.asax укажите (внутри метода RegisterRoutes):
routes.MapRoute(
"MyShortRoute",
"view/{id}",
new { Controller = "test", action = "Index" }
);
Первый параметр - это имя, второй - формат URL, а последний параметр - значения по умолчанию (в этом случае, если вы оставите id пустым, по умолчанию будет id 0.
Обратите внимание, что я не использую test / {id}, поскольку это также соответствует test / Edit, где edit - это действие, которое вы не хотите передавать в качестве параметра (я не могу придумать другой способ избежать этого особенно если вы используете строки вместо целочисленных значений для параметров).
Не забудьте правильно упорядочить маршруты в файле global.asax. Поставьте более конкретные маршруты перед менее конкретные маршруты. Когда система ищет маршрут, по которому она идет, она не пытается найти наиболее конкретное совпадение, но вместо этого она начинает сверху и использует первое найденное совпадение.
Следовательно, это плохо:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "test", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"Specific",
"test/{id}",
new { controller = "test", action = "Index", id = 0 }
);
В этом примере, если вы перейдете к параметру test / somevalue, он будет соответствовать записи FIRST, а это не то, что вам нужно, предоставляя вам testcontroller и действие somevalue.
(Когда вы добавляете более конкретный маршрут, вы захотите, чтобы он был ближе к вершине, и определенно до вашего значения по умолчанию).