路由问题/ T4MVC Url.Action()

时间:2010-04-15 20:39:31

标签: c# asp.net-mvc asp.net-mvc-routing t4mvc

我有这两条路线:

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>

除非我今天开始链接,如果是今天,il只会指向www.myurl.com/agenda,女巫是CnfigurationManager.AppSettings [“eventsUrl”]的价值。我究竟做错了什么?就像今天一样,它指向默认议程......

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

实际上,您的路由和Url.Action()调用都正如您所期望的那样工作:当路由数据与默认数据相同时,它将从URL中省略。由于您将DateTime.Now.Day等作为默认值,因此在链接到今天的日程时,它不会包含任何日期值。

但是,这仍然会按照您的意愿行事。如果你点击今天议程的链接,你实际上会显示今天的议程 - 只有不在URL中。

答案 1 :(得分:0)

要研究的一件事是你是否真的需要在你的路线中拥有所有这些默认值,因为它们是问题的根源。例如如果您只是从第二条路线中删除'day = DateTime.Now.Day'默认值会怎样?

您需要确定您希望您的网址做什么,例如

www.myurl.com/agenda/2010/04

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