2012-05-29 3 views
0

Я пытаюсь изменить URL-адрес, отображаемый в браузере пользователя с Happy/Balloons, до счастливых/всплывающих окон. В проекте есть много ссылок на действие «Воздушные шары», поэтому вместо изменения тех ссылок, которые я хотел бы изменить global.asax, чтобы появился другой URL-адрес для одного и того же действия. Оригинальный MVC маршрут выглядит следующим образом:URL-адрес MVC не переписывается

routes.MapRoute(
      "Happy.Balloons", 
      "Happy/Balloons/{groupId}/{paymentType}/{mortgageValue}/{province}", 
      new { controller = "Happy", action = "Balloons" }, 
      new { groupId = "\\d+", paymentType = "\\d+", mortgageValue = "\\d+", province = "\\d+" } 
     ); 

Я изменил код

routes.MapRoute(
      "Happy.Balloons", 
      "happy-times/balloon-pops/{groupId}/{paymentType}/{mortgageValue}/{province}", 
      new { controller = "Happy", action = "Balloons" }, 
      new { groupId = "\\d+", paymentType = "\\d+", mortgageValue = "\\d+", province = "\\d+" } 
     ); 

Я думал, что это второй параметр отображалось URL, но я получаю: «Ресурс вы был удален, его имя было изменено или временно недоступно ». ошибка. Есть ли простой способ сделать это, изменив параметры в MapRoute? Если да, то как?

Вопрос Последующий: Change URL of action in mvc

+0

valen? ссылка на babylon 5? – deltree

+0

мое имя, фактически. но теперь вы меня заинтересовали :) – valen

ответ

2

Вы делаете это неправильно.

Изменение отображения маршрута не изменит имя контроллера. Измените имя контроллера и имя действия и нарисуйте свой маршрут как {controller}/{action}, как и по умолчанию. Затем вы можете установить свой контроллер по умолчанию и действия, как и раньше.

Тогда ваш контроллер должен быть переименован в happy-times и ваши действия переименован в balloon-pops

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

{controller}/{action}/{groupId}/{paymentType}/{mortgageValue}/{province} 

Вот хороший ресурс по этой теме.

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

, как принес вам это ТАК размещать https://stackoverflow.com/a/2375293/1178921

** Похоже, вы пытаетесь увидеть больше способов сделать это.

В этом сообщении рассказывается об атрибутах, которые вы можете использовать для маршрутизации URL-адресов по-разному. ASP.NET MVC Routing Via Method Attributes

Кроме того, ваш способ изменения URL-адреса в карточке МОЖЕТ работать, но это не то, что я думал о вашем намерении. Zach dev был в этом случае мертв. Ваши дополнительные параметры должны быть помечены как таковые с UrlParameter.Optional

+0

Итак, нет способа переписать имя контроллера при рендеринге определенного URL-адреса? То есть, URL-адрес всегда будет иметь то же имя, что и контроллер? Спасибо за ресурсы кстати, обязательно дадут им взглянуть и опубликуют любое решение, которое я придумал – valen

2

это работает (замена urlParameter.Optional значения по умолчанию)

routes.MapRoute(_ 
      "Happy.Balloons", _ 
      "happy-times/ballons-pops/{groupId}/{paymentType}/{mortgageValue}/{province}", _ 
      New With {.controller = "happy", .action = "Balloons", .groupId = UrlParameter.Optional, .paymentType = UrlParameter.Optional, .mortgageValue = UrlParameter.Optional, .province = UrlParameter.Optional} _ 
    ) 

, но ... это плохая практика (на самом деле плохой)

Вы можете узнать о картах маршрутов here

+0

. Какую часть вы называете «практикой кровати»? –

+0

@AlexeiLevenkov «Практика кровати» - это то, что нам всем нравится :) Извините, я не могу удержаться, хотя я думаю, что это была опечатка. Никаких трудностей – BobRock