Как решить 'MapRoute использует'.{controller} / {name} принимает все вызовы действий на одном и том же маршруте - PullRequest
1 голос
/ 17 апреля 2019

Я использую

'routes.MapRoute'

чтобы получить один параметр без вызова имени действия. он работает нормально, но теперь моя проблема в том, что когда бы я ни захотел использовать любое другое действие из того же контроллера, он всегда вызывал одно и то же действие, которое описано в 'rout.MapRoute'.

Мой ajax-вызов для всех других действий имеет тип GET. но все же он вызывает то же действие, которое описано в маршрутах. MapRoute.

// Это мой маршрут.

routes.MapRoute(
        "kuenstler",
        "kuenstler/{name}",
        new { controller = "kuenstler", action = "Index" }
    );

// мой маршрут по умолчанию

 routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Site", action = "Index", id 
= 
    UrlParameter.Optional }
            );

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

<a href="kuenstler/name-lastname">link</a> 

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

 public ActionResult Index(string name)
    {
        return View();
    }
    [HttpGet]
    public ActionResult GetKuenstlerGalleryData(int? artistId, string 
     direction)
    {
    /// some code
    }

Каждый раз, когда я нажимаю на ссылку

// локальный:. 50519 / Kuenstler / Firstname-фамилия

Я получаю имя в моем указателе. Затем я вызываю второе действие из JavaScript с типом GET. Но каждый раз, когда он входит в индекс с именем вызывающего действия в качестве параметра.

1 Ответ

1 голос
/ 17 апреля 2019

Но каждый раз, когда он входит в индекс с именем вызывающего действия в качестве параметра.

Конечно, путь ваших запросов идеально подходит для шаблона маршрута kuenstler. Вы можете отобразить конкретный маршрут для действия GetKuenstlerGalleryData прямо перед «kuenstler». Ex.

routes.MapRoute(
        "kuenstler-gallery-data",
        "kuenstler/GetKuenstlerGalleryData",
        new { controller = "kuenstler", action = "GetKuenstlerGalleryData" }
    );

routes.MapRoute(
        "kuenstler",
        "kuenstler/{name}",
        new { controller = "kuenstler", action = "Index" }
    );

или используйте отдельный шаблон, например

routes.MapRoute(
        "kuenstler-gallery-data",
        "kuenstler-gallery-data",
        new { controller = "kuenstler", action = "GetKuenstlerGalleryData" }
    );

или даже использовать атрибут маршрутизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...