Вы можете сопоставить маршрут / Schedule с действием / Admin / Schedule из Global.asax.cs следующим образом:
routes.MapRoute(
"Schedule",
"schedule",
new { controller = "Admin", action = "Schedule" }
);
Это решит вашу непосредственную проблему с желанием двух отдельных маршрутов, что приведет к одному и тому же действию / представлению.
Однако это не решит ваш сценарий должным образом. Основная проблема заключается в том, что идентификатор вошедшего в систему пользователя является ортогональным к маршруту, по которому идет запрос. Другими словами, вы не можете заставить пользователя с правами администратора всегда идти по маршруту / Admin / Schedule, они также могут попасть по маршруту / Schedule и все равно ожидают того же конечного результата. Мало того, но если вы сделаете это таким образом, вы не сможете использовать атрибут [Authorize] на контроллере администратора или действие, чтобы заставить пользователя войти в систему, и вам придется реализовать пользовательскую логику, проверяющую, по какому маршруту выполнено действие, и решить, Вы хотите принудительно войти в систему или пропустить пользователя.
Таким образом, вы должны принять решение:
- вы предоставляете доступ к контроллеру, действию и представлению и определяете, отображать ли дополнительную информацию в представлении на основе идентификатора и роли участника вошедшего в систему пользователя (если есть). Тогда вам придется изменить имя контроллера, так как / Admin не будет отражать новую роль этого класса;
- вы разделяете только представление и имеете два отдельных контроллера и действия - Admin.Schedule и User.Schedule. Вам нужно будет поместить представление в папку / views / shared и вернуть то же представление из обоих действий, потенциально передавая другую модель. В итоге вы получите два маршрута - / Admin / Schedule и / User / Schedule;
- у вас есть два отдельных контроллера, действия и представления.
Во всех трех случаях у вас все еще может быть указанное выше правило, указывающее на соответствующий контроллер, если вы хотите иметь также самый короткий / Расписание маршрута.