2

2 つのルートが登録されています。

//News page routing with optional news article ID
routes.MapRoute(
name: "News",
url: "news/{id}",
defaults: new { controller = "News", action = "Index", id = UrlParameter.Optional }
);

デフォルトのリンク (ID なし) は次のように生成されます。@Html.ActionLink("News", "Index", "News")

//User page routing with User ID
routes.MapRoute(
name: "Profile",
url: "{id}/{controller}/{action}",
defaults: new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);

リンクは次のように生成されます。

[a href="@Url.Action("Index", "Account", new RouteValueDictionary(new { id = "test-user-id" }))"]Me[/a]

私の News リンクは domain/news として作成され、動作し、Me リンクは domain/test-user-id として作成され、動作します。

しかし、Me リンクにアクセスすると、News リンクは domain/news/test-user-id になり、これは私が望むものではありません。mvc ルーティングを使用してニュース ID とユーザー ID を「分離」するにはどうすればよいですか??

4

2 に答える 2

0

ニュース リンクでは、URL に最初にコントローラがあり、次にアクションがあります。

Me リンクでも同じパターンに従う必要があります。すなわち

{コントローラ}/{アクション}/{id}

于 2012-09-29T01:12:19.683 に答える
0

なぜそうなるのかはよくわかりませんが、ルーティングについていくつか提案があります。まず、ユーザー ルートについては、UrlParameter.Optional実際にはオプションではないため、 を削除します。また、とは不要なので、URL テンプレートから削除{controller}します。{action}

//User page routing with User ID
routes.MapRoute(
    name: "Profile",
    url: "{id}",
    defaults: new { controller = "Account", action = "Index" }
);

次に、より正確にルーティング ルールをターゲットにするため、プロファイル リンクの@Url.RouteUrl代わりに使用します。@Url.Action

ニュース:

@Html.RouteLink("News", "News")

プロフィール:

@Url.RouteUrl("Profile", new { id = "test-user-id" })
于 2012-09-29T01:52:19.813 に答える