Как создать пользовательский URL в MVC3 вместо передачи моих параметров в виде строки запроса - PullRequest
0 голосов
/ 13 февраля 2012

Когда я набираю URL как ../Search/Recipes/Deserts/Pie, я могу быть перенаправлен на эту страницу (т. Е. В SearchController, метод действия будет Recipes, а параметры будут Deserts & Pie.

NB. Чтобы добиться того же, я добавил в свой Global.asax маршрут, который выглядит следующим образом:

    routes.MapRoute(
            "SearchRecipes",                                              
            "Search/Recipes/{category}/{type}",                           
            new { controller = "Search", action = "Recipes", category = "all" , type = ""}  
 );

Но как создать этот URL с помощью нашего кода? Когда я пытаюсь добавить значение маршрута в Url.Action, оно появляется в виде строки запроса.

Например,

Url.Action( "Recipes" , "Search" , new { type = item.type, isPie = item.isPie} )

даст мне ссылку, которая выглядит так: Search/Recipes?type=Deserts&isPie=Y,

но я хочу сгенерировать URL как Search/Recipes/Deserts/Y.

Пожалуйста, дайте мне знать, как мы можем достичь того же?

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

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Попробуйте

 routes.MapRoute(
        "SearchRecipes",                                              
        "Search/Recipes/{category}/{type}/{isPie}",                           
        new { controller = "Search", action = "Recipes", category = "all" , type = "", isPie="N"}  
  );
@Url.RouteUrl("SearchRecipes",new{category=item.Category,type=item.type,isPie=itme.isPie})

Любой параметр запроса, не указанный при определении маршрута, будет добавлен как? Param = value

0 голосов
/ 13 февраля 2012

Вы можете использовать метод UrlHelper.RouteUrl

Url.RouteUrl("SearchRecipes", new {category = item.category, type=item.type});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...