ASP MVC - 错误的路线?

时间:2013-03-13 01:16:28

标签: asp.net asp.net-mvc asp.net-mvc-3 razor

我有一个区域,我已经调用了论坛,现在,在线程列表页面中,我有线程链接,生成如下:

@Html.ActionLink(title, "Thread", "Forums", new { category = item.CategoryName, item = item.Id, page = 0 }, null)

现在,当我打开一个线程,并且我想从一个线程中获取当前线程的链接时,我正在这样做(在线程中):

@Html.ActionLink(title, "Thread", "Forums", new { category = Model.Post.CategoryName, item = Model.Post.ThreadId, page = Model.Page }, null)

线程列表页面和线程页面都在同一区域。 现在一起来看两个动作链接:

   1. @Html.ActionLink(title, "Thread", "Forums", new { category = Model.Post.CategoryName, item = Model.Post.ThreadId, page = Model.Page }, null)
   2. @Html.ActionLink(title, "Thread", "Forums", new { category = item.CategoryName, item = item.Id, page = 0 }, null)

这两个动作链接几乎相同(Model包含有效数据,我已经检查过),但它们生成了不同的链接:

第一个:

http://localhost:11227/Forums/Thread/1?category=Kosz&page=0
第二个:

http://localhost:11227/Forums/Thread/Kosz/1/0

第二个生成正确的链接,而第一个...我不知道第一个做什么。它们之间的唯一差异就是执行它们的地方,如上所述,第一个在线程中执行,第二个在线程列表页面中执行。

我该怎么做才能修复第一个链接?

更新:已添加路线:

context.MapRoute(
                "Forums_thread",
                "Forums/{action}/{category}/{item}/{page}",
                new { controller = "Forums", page = UrlParameter.Optional }
            );

第二次更新我认为我真的发现了一些错误?感谢Eilon的回复,我发现了这个:

@Html.ActionLink("something", "Thread", "Forums", new { category = "Kosz", item = Model.Post.ThreadId, page = Model.Page }, null)

生成正确的链接,而这个:

@Html.ActionLink("something", "Thread", "Forums", new { category = Model.Post.CategoryName, item = Model.Post.ThreadId, page = Model.Page }, null)

生成错误的链接(Model.Post.CategoryName仍然是"Kosz")!我不知道发生了什么......

1 个答案:

答案 0 :(得分:0)

请更正以下路线

context.MapRoute(
                "Forums_thread",
                "Forums/{action}/{category}/{item}/{page}",
                new { controller = "Forums",category="category", item="item",page = UrlParameter.Optional }
            );