Подобные URL должны использовать похожие маршруты.Таким образом, в этом случае у вас есть только один шаблон URL, который /controller/action/someid
.Поэтому просто используйте маршрут по умолчанию:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
, а затем обновите свои действия:
public partial class MyController : Controller
{
public ActionResult Action1()
{
}
public ActionResult Action2(int id)
{
}
public ActionResult Action3(string id)
{
}
public ActionResult Action4(string name)
{
}
}
Что касается последнего действия, параметр name
можно передать в виде строки запроса,Если вы действительно настаиваете на том, чтобы он был частью пути, вы можете переименовать его в id
.Лучше передавать произвольные строки, такие как имена, как параметры строки запроса, а не как часть пути URL.