Не удается заставить MVC Routing работать - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть сайт, и URL-адрес выглядит так:

Home/LocationPage?locationId=f25a9ba4-54dc-4e6a-bdbf-094a5a6f7801

Я хотел бы, чтобы он выглядел следующим образом:

Home/My Restaurant

Я пробовал сопоставлять маршруты, как это;

        routes.MapRoute(
            "Location",
            "{Controller}/{LocationName}",
            new { controller = "Home", action = "LocationPage", LocationName = "" }

Но кажется, что URL вообще не может измениться.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2011

Если вы получили параметр LocationId в вашем Action, вам нужно изменить маршрут:

routes.MapRoute(
            "Location",
            "{Controller}/{LocationId}",
            new { controller = "Home", action = "LocationPage", LocationId = "" }

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

0 голосов
/ 26 декабря 2011

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

Добавьте ограничение маршрута (или переопределите метод OnActionExecuting на контроллере или добавьте атрибут к методу действия), который ищет параметр маршрута LocationName в базе данных и (если он найден) добавляет параметр locationId к параметрам маршрута. , Затем создайте действие с именем LocationPage, которое принимает locationId (имя местоположения необязательно).

Таким образом, вы получаете красивые URL-адреса, но действие не требует поиска.

...