私はフォーラムと呼んでいる領域を持っています。現在、スレッド リスト ページには、次のように生成されるスレッド リンクがあります。
@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)
これらの 2 つのアクションリンクは実質的に同じですが (Model
有効なデータが含まれていることを確認しました)、異なるリンクを生成しています。
最初の1つ:
http://localhost:11227/Forums/Thread/1?category=Kosz&page=0
二つ目:
http://localhost:11227/Forums/Thread/Kosz/1/0
2 つ目は正しいリンクを生成しますが、最初のものは...最初のものは何をしているのかわかりません。それらの唯一の違いは、上で述べたように、それらが実行される場所です。最初の 1 つはスレッドで実行され、2 番目はスレッド リスト ページ内で実行されます。
最初のリンクを修正するにはどうすればよいですか?
更新:追加されたルート:
context.MapRoute(
"Forums_thread",
"Forums/{action}/{category}/{item}/{page}",
new { controller = "Forums", page = UrlParameter.Optional }
);
2 回目の更新本当にバグを見つけたと思いますか? 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"
です)! 何が起こっているのかわかりません...