Mahesh@Dev Ответов: 1

Хотите настроить маршрут с двумя параметрами и без какого-либо статического ключевого слова в URL


В конфигурации маршрута, как это

routes.MapRoute(
             name: "Description",
             url: "{ItemType}/{Slug}",
             defaults: new { controller = "Home", action = "Description", ItemType = UrlParameter.Optional, Slug = UrlParameter.Optional }
         );


И на контроллере вроде этого но он всегда открыт описание

[Route("{ItemType:string}/{Slug:string}")]
      public ActionResult Description(string ItemType, string Slug)
      {

          return View();
      }


Что я уже пробовал:

Мне нужно только два параметра в конфигурации маршрута и никакого статического ключевого слова.

1 Ответов

Рейтинг:
0

David_Wimbley

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

Если вы решите использовать maproutes, удалите атрибут route в своем действии

Это был бы правильный маршрут для использования:

routes.MapRoute(
             name: "Description",
             url: "Home/Description/{ItemType}/{Slug}",
             defaults: new { controller = "Home", action = "Description", ItemType = UrlParameter.Optional, Slug = UrlParameter.Optional }
         );


Где ItemType и Slug - это те же имена, что и параметры в вашем действии

Вы также можете сделать

routes.MapRoute(
             name: "Description",
             url: "{controller}/{action}/{ItemType}/{Slug}",
             defaults: new { controller = "Home", action = "Description", ItemType = UrlParameter.Optional, Slug = UrlParameter.Optional }
         );


Как еще один вариант при использовании метода MapRoute.

Если вы решите использовать атрибуты маршрута. Вам нужно добавить эту строку в RouteConfig и удалить любой существующий код маршрутизации, связанный с вашим действием описания.

routes.MapMvcAttributeRoutes();


Тогда ваш контроллер будет украшен атрибутами, определяющими ваш маршрут.

[RoutePrefix("myhome")]
    public class HomeController : Controller
    {
        [Route("Index/{ItemType}/{Slug}")]
        public ActionResult Index(string ItemType, string Slug)
        {
            return View();
        }
    }


URL-адрес в этом примере будет следующим http://localhost/myhome/index/itemtypehere/slugnamehere

И тогда бы парам Пункттип == itemtypehere и слизня парам будет == slugnamehere


Mahesh@Dev

Но мне нужен " домен/Itemtype/Slug"