Маршрутизация URL-адреса RouteValueDictionary как проблема второго элемента - PullRequest
1 голос
/ 13 марта 2011

У меня проблема с отправкой URL-адреса в качестве элемента RouteValue и получением GetVirtualPath с параметром.

 var parameters = new RouteValueDictionary { 
       { CommonUrl.UrlParameters.AnyString, "ItISAnyString"},
       {CommonUrl.UrlParameters.ReturnUrl, "test/myPage/Index"}   
  };

И получением URL-адреса с такими параметрами:

RouteTable.Routes.GetVirtualPath(null, anyRouteName, **parameters**).VirtualPath

Итак, я получаюURL вроде http://localhost/ItISAnyString/test/myPage/Index

Система не распознала эту страницу и печально 404. Но если я вручную сделаю что-то подобное
http://localhost/ItISAnyString/test$myPage$Index Все будет работать нормально.Я думаю, что должен существовать лучший способ решить эту проблему.

Редактировать

Я обнаружил, что для этого Маршрута t exist any RouteValueDictionary. I think that routing don t не может быть отменен второй параметр, если имеется более одного символа '/'.Поэтому я создам его и посмотрю, что произойдет.

Редактировать

Мой колледж грустит, что мне приходится кодировать URL при отправке в качестве параметра.Хорошо, я сделал этоНо сейчас у меня ошибка 400.Это немного странно, как по мне.

1 Ответ

0 голосов
/ 15 марта 2011

Проблема была в шаблоне сопоставления. Я только что добавил шаблон {*} в карты маршрутов. Теперь мой код global.asax:

routes.MapPageRoute(RouteName.Security.TestOne,
                                            Test, 
                                            "~/Web/Pages/Test/test.aspx", true);

  public static string Test = String.Format("{0}/{1}/{2}/{3}",
                                                                            "Test",
                                                                            "Testconfirm",
                                                                            "{" + CommonUrl.UrlParameters.FirstParam+ "}",
                                                                            "{*****" + CommonUrl.UrlParameters.Url + "}");

Это понятие называется «Обработка переменного количества сегментов в шаблоне URL». http://msdn.microsoft.com/en-us/library/cc668201.aspx

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