我有一个我称之为论坛的区域,现在,在线程列表页面中,我有线程链接,它们是这样生成的:
@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"
)!我不知道发生了什么...