У меня есть веб-сайт, которому требуется идентификатор отдела для всех сайтов, поэтому я переписал маршрут по умолчанию следующим образом:
routes.MapRoute(
name: "Main",
url: "{deptID}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", deptID = "", id = UrlParameter.Optional }
);
Он отлично работает, когда вы, например, используете следующий URL:
или просто:
Моя проблема в том, что когда я перехожу к "http://домен/", я получаю сообщение об ошибке, потому что я не указал ИД отдела. Как я могу добавить второй маршрут, который будет срабатывать, когда вы просто заходите в домен.
Я попытался добавить следующее:
routes.MapRoute(
name: "Start",
url: "/",
defaults: new { controller = "Department", action = "Select"}
);
Что не работает, так как вы не можете просто указать «/» в качестве URL-адреса.
Я также попытался добавить маршрут по умолчанию, а затем просто изменить объект по умолчанию:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Department", action = "Select", id = UrlParameter.Optional }
);
Это тоже не работает.
эта ссылка решила вашу проблему: Несколько маршрутов в MVC asp.net
Вы должны изменить свой код, как показано ниже
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Department",
url: "{deptID}/{controller}/{action}",
defaults: new { controller = "Department", action = "Index"}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Выход
Дайте мне знать, если приведенный выше код все еще не работает для вас.
Теперь это не дает мне ошибки, но вызывает HomeController, а не DepartmentController, который я установил в объекте по умолчанию.
Оно работает. Но, похоже, мне даже не нужны два маршрута. Я могу просто использовать основной маршрут, а затем убедиться, что для действия по умолчанию не требуется параметр DepartmentID.
Какую ошибку вы получаете в первую очередь? Поскольку вы указали значение по умолчанию для
deptID
вdefaults
, вы должны выполнить действие контроллера без ошибок. Опубликуйте свой контроллер и ошибку тогда.