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)

これらの 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"です)! 何が起こっているのかわかりません...

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 に答える