проблема с маршрутизацией / T4MVC Url.Action () - PullRequest
0 голосов
/ 16 апреля 2010

У меня есть 2 маршрута:

routes.MapRoute("Agenda", ConfigurationManager.AppSettings["eventsUrl"] + "/{year}/{month}", MVC.Events.Index(), new { year = DateTime.Now.Year, month = DateTime.Now.Month });
routes.MapRoute("AgendaDetail", ConfigurationManager.AppSettings["eventsUrl"] + "/{year}/{month}/{day}", MVC.Events.Detail(), new { year = DateTime.Now.Year, month = DateTime.Now.Month, day = DateTime.Now.Day });

И он прекрасно работает с этим кодом:

<a href="<%= Url.Action(MVC.Events.Detail(Model.EventsModel.PreviousDay.Year, Model.EventsModel.PreviousDay.Month, Model.EventsModel.PreviousDay.Day))%>" title="<%= Model.EventsModel.PreviousDay.ToShortDateString() %>"><img src="<%= Links.Content.images.contenu.calendrier.grand.mois_precedent_png %>" alt="événement précédent" /></a>

За исключением случаев, когда я получу ссылку на сегодня, если это сегодня, я укажу только на www.myurl.com/agenda, ведь это значение CnfigurationManager.AppSettings ["eventsUrl"]. Что я делаю неправильно? Это как если бы это было сегодня, это указывает на стандартную повестку дня ...

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 16 апреля 2010

На самом деле ваши маршруты и вызов Url.Action() работают точно так, как вы ожидаете: когда данные маршрута совпадают с данными по умолчанию, они не включаются в URL.И поскольку вы задаете значения DateTime.Now.Day и т. Д. В качестве значений по умолчанию, при связывании с сегодняшней повесткой дня они не будут включать значения даты.

Однако это все равно будет работать так, как вы хотите.Если вы нажмете ссылку на сегодняшнюю повестку дня, вы фактически отобразите сегодняшнюю повестку дня - только не в URL.

0 голосов
/ 16 апреля 2010

Одна вещь, на которую стоит обратить внимание, - действительно ли вам нужно иметь все эти значения по умолчанию в ваших маршрутах, так как они являются источником проблемы. например что произойдет, если вы просто удалите значение по умолчанию 'day = DateTime.Now.Day' из второго маршрута?

Вам нужно решить, что вы хотите, чтобы ваши URL делали, например,

www.myurl.com/agenda/2010/04

Хотите ли вы, чтобы это отображало повестку дня на 4/2010, или вы хотите, чтобы оно отображало сегодняшний AgendaDetail?

...