Конфигурация маршрута Asp.net MVC

Во-первых, я не разработчик (дизайнер пользовательского интерфейса), но мне приходится работать с каким-то asp.net, ну потому что жизнь... так что я мало что знаю.

У меня есть такая структура:

Просмотры › Партнеры ›

а внутри Partners у меня есть более 40 файлов с именами в CamelCase, например FileName.cshtml и т. д.

Мне нужно перенаправить URL-адрес, чтобы вместо website/Partners/PartnerName это было так: website/partners/partner-name

Я перепробовал множество руководств, но я просто не могу понять, что нужно сделать, чтобы добиться этого. Самое близкое к решению, которое я нашел, было использование [Route(partners/partner-name)] внутри контроллера Partners. Но для этого решения я должен добавить эту строку кода ко всем 40 файлам (в будущем их будет больше сотни). Я считаю, что должен быть какой-то способ автоматически сделать это для всех страниц, которые у меня есть, вместо того, чтобы вручную редактировать каждую из них.

Опять же, я не разработчик, мне просто приходится иметь дело с этим прямо сейчас, и я почти ничего не знаю о .net. Спасибо.


person Fernando Pereira    schedule 19.01.2021    source источник
comment
Какую версию asp.net mvc вы используете?   -  person silverfighter    schedule 20.01.2021
comment
4.6.1 Я верю   -  person Fernando Pereira    schedule 20.01.2021


Ответы (1)


Я предполагаю, что 4.6.1 - это .Net-Framework. Поэтому я просто дам ответ, который применим к MVC 5, и мы посмотрим, насколько он вам подходит. (Потому что управление версиями сложно - в последнее время сбивает с толку пространство дотнетов).

Вы можете переопределить маршрутизацию в файле с именем RouteConfig.cs

routes.MapRoute(
            name: "OverrideRoute",
            url: "websites/partners/{partner-name}",
            defaults: new { controller = "AnController", action ="AnAction" }
    );

Остерегайтесь, что порядок имеет значение — победа в первом матче. Также это настроено, действуйте как /websites/partners/contosocompany, если вы хотите особенно websites/partners/partner-name/contosocompany (‹- менее приятно и читабельно), вам нужно будет настроить свойство url в MapRoute

Также должна быть возможность группировать маршруты, см. этот ответ здесь: Asp.net MVC 5 MapRoute для нескольких маршрутов

И, пожалуйста, поговорите со своими разработчиками, если у вас есть определенные разделы, которые почти похожи на отдельные страницы mvc, вы также можете воспользоваться концепцией под названием areas. Например, ваш раздел партнеров может быть областью. https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas?view=aspnetcore-5.0

... и имейте в виду, что если вы дизайнер, который может заглянуть в код, прочитать и изменить его, вы уже получили бизнес-преимущество в нашей отрасли.

person silverfighter    schedule 20.01.2021