Как создать маршрут только с параметрами, при этом сохраняя предопределенные маршрутыC#

Место общения программистов C#
Ответить
Anonymous
 Как создать маршрут только с параметрами, при этом сохраняя предопределенные маршруты

Сообщение Anonymous »

Я пытаюсь создать очень гибкую систему маршрутизации, которая позволяет пользователям настраивать свои собственные пути публикации URL на свои собственные страницы контента, вроде CMS. Чтобы достичь этого, я создал общий контроллер и маршрут, который принимает 3 параметров в этой форме:
https: // localhost: 8080/{route1}/{route2}/{route3}
это мой контроллер:

.

Код: Выделить всё

public class XController : Controller
{
[HttpGet("{route1?}/{route2?}/{route3?}")]
public async Task Index([FromRoute] string? route1, [FromRoute] string? route2, [FromRoute] string? route3)
{
if (User == null || User.Identity == null || !User.Identity.IsAuthenticated)
return Unauthorized();
//do some stuff here
return View("/views/X/Index.cshtml", model);
}
}
< /code>
И это отлично работает. Тем не менее, я все еще хочу использовать некоторые «предопределенные» маршруты для специальных функций, таких как вход в систему, управление учетными записями, платежи и т. Д. Поэтому я думаю, что иметь некоторые предопределенные маршруты для этих специальных контроллеров, а затем все остальное идет в общий контроллер, определенный выше. К сожалению, все, даже мои «предопределенные» маршруты идут в общий контроллер. У меня определено маршрутизация так: < /p>
app.MapControllerRoute(
name: "default",
defaults: new { controller = "Home", action = "Index" },
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapControllerRoute(
name: "account",
defaults: new { controller = "Account", action = "Index" },
pattern: "{controller=Account}/{action=Index}/{id?}");
app.MapControllerRoute(
name: "x",
defaults: new { controller = "X", action = "Index" },
pattern: "{route1?}/{route2?}/{route3?}");
Так, например, если я перейду на https: // localhost: 8080/account/rougin, общий контроллер, определенный выше, все еще обрабатывает запрос, а не мой «учетная запись». Я хотел бы, чтобы запросы на мои «предопределенные» маршруты будут обработаны их соответствующими названными контроллерами, и все остальное, которое будет обработано общим контроллером. Или я, возможно, упускаю что -то простое? Как я могу иметь несколько предопределенных маршрутов к названным контроллерам, а затем любой другой маршрут, который не соответствует тем контроллерам, обрабатываемым универсальным (без контроллера) контроллера?

Подробнее здесь: https://stackoverflow.com/questions/797 ... efined-rou
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»