маршрут к адресам с той же структурой - PullRequest
1 голос
/ 04 июня 2019

Я новичок в MVC и web dev, у меня есть следующие маршруты:

        //"/display/flight1/4" - upload frm flight1 file, show as animation(4 times in a sec), show end alert
        routes.MapRoute(
            name: "uploadPlaneData",
            url: "display/{fileName}/{times}",
            defaults: new { controller = "Display", action = "UploadPlaneData", fileName = "flight1", times = 4 }
        );

        //"/display/127.0.0.1/5400" - check plane place(port 5400 ip 127.0.0.1)(lat, lon) and show a plane icon on the map
        routes.MapRoute(
            name: "showPlaneIcon",
            url: "display/{ip}/{port}",
            defaults: new { controller = "Display", action = "ShowPlaneIcon", ip = "127.0.0.1", port = 5402 }
        );

Проблема в том, что если я пытаюсь перейти на вторую страницу, она показывает мне первую. и я помещаю второе выше первого в коде, затем оно перемещается к одной вершине, мой вопрос, как я могу перейти к /display/127.0.0.1/5400 и /display/flight1/4

1 Ответ

1 голос
/ 04 июня 2019

Вы можете попробовать использовать regular expressions для атрибутов обоих маршрутов.Например:

routes.MapRoute(
    name: "uploadPlaneData",
    url: "display/{fileName}/{times}",
    defaults: new { controller = "Display", action = "UploadPlaneData", fileName = "flight1", times = 4 },
    constraints: new { fileName = @"\w+", times = @"\d+" }
);

routes.MapRoute(
    name: "showPlaneIcon",
    url: "display/{ip}/{port}",
    defaults: new { controller = "Display", action = "ShowPlaneIcon", ip = "127.0.0.1", port = 5402 },
    constraints: new { ip = @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", port = @"\d+" }
);
...