私はMVCに慣れています。ASP.Netルーティングの問題
domain/{action}
domain/{username}/{action}
domain/{username}
(ユーザー名は、IDの代わりになる) 同じコントローラは、3つのすべてのために使用されます。ここでは
は、私は私のルートが設定する方法です。
私はすべての3つを入力した場合、それはここで私
のページをロードする必要があり、私がもともと持っているものです。それは動作しません。私にはリンクを作成するURL.Actionメソッドがあり、それらを適切に作成しません。私は順序を入れ替えようとしましたが、問題はまだ残っています。つまり、ルーティングについて概念的に何か不足しています。ここで
は、私はもともと
routes.MapRoute(
"WithUsername","{username}",
new { controller = "Home", action = "Landing"}
);
routes.MapRoute(
"WithOutUsername",
"{action}",
new { controller = "Home", action = "Landing"}
);
routes.MapRoute(
"Default",
"{username}/{action}",
new {controller = "Home", action = "Landing"}
);
誰もが正しい方向に私を引き起こす可能性を持っていたものでしょうか?
リンクがどのように乱されているかの例です。 URLをクリックして私をLearning Resourcesに連れて行くとしよう。 URL.ActionはLearning Resourcesアクションを指します。重複する名前はありません。ここで
は、私はこの
domain/LearningResources?username=LearningResources
はどういうわけか、それがあっても、ユーザ名としてLearningResourcesを検出し得るURL.Action
<a href="@Url.Action(title.actionName, title.controllerName, new {Model.username})">@title.name</a>
代わりのこの
domain/LearningResources
を得ていますユーザー名はありません。私のすべてのアクションはオプションのパラメータ(username = ""という文字列として設定されている)としてusernameを取ります。そのため、ユーザ名とアクションは混乱しているようです。意図されました。
私は自分のアドレスとして最初にドメインを使用すると、それだけがうんざりするようです。私がdomain/{action}またはdomain/{username}で始めると、すべてのリンクがそれに応じて動作します。
ドメインだけがドメイン/ {アクション}になるようにドメインを再ルーティングすることはできますか?
はい、ルーティングに関する基本的なものがありません - 「なぜasp.net mvcの共通ルートの前に特別なルートをマップするのですか」(https://stackoverflow.com/a/35674633/181087)を参照してください。 MVCではURL {{ユーザー名}}と{アクション}の違いは1つのセグメント変数であるため区別できません。それらを区別するためのものが必要です(ルート制約やリテラルURLセグメントなど)。 – NightOwl888
こんにちは、ありがとう。最初の投稿に詳細を追加しました。私はあなたが私に与えた記事を見ていきます。 – lettuceman44
@ lettuceman44あなたもアクションを追加できますか? – Usman