3

我有一个我称之为论坛的区域,现在,在线程列表页面中,我有线程链接,它们是这样生成的:

@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")!我不知道发生了什么...

4

1 回答 1

0

请更正以下路线

context.MapRoute(
                "Forums_thread",
                "Forums/{action}/{category}/{item}/{page}",
                new { controller = "Forums",category="category", item="item",page = UrlParameter.Optional }
            );
于 2013-06-27T11:10:50.877 回答