0

我有这两条路线:

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,witch 是 CnfigurationManager.AppSettings["eventsUrl"] 的值。我究竟做错了什么?就像今天一样,它指向默认议程......

谢谢您的帮助!

4

2 回答 2

1

实际上,您的路由和Url.Action()调用都完全按照您的预期工作:当路由数据与默认数据相同时,它会从 URL 中省略。并且由于您将DateTime.Now.Dayetc 作为默认值,因此在链接到今天的议程时,它不会包含任何日期值。

但是,这仍然会按照您的意愿行事。如果您单击指向今天议程的链接,您实际上会看到今天的议程 - 只是不在 URL 中。

于 2010-04-15T20:44:12.680 回答
0

要研究的一件事是您是否真的需要在路由中包含所有这些默认值,因为它们是问题的根源。例如,如果您只是从第二条路线中删除“day = DateTime.Now.Day”默认值会发生什么?

您需要决定您希望您的 URL 做什么,例如

www.myurl.com/agenda/2010/04

您希望它显示 4/2010 的议程,还是希望它显示今天的 AgendaDetail?

于 2010-04-15T23:56:06.673 回答