0

ユーザーが次のような特定のページを開くことができるルートを作成する必要があります

http://www.mywebsite.com/profilename

これを入力すると、正しい情報を含むプロフィールを表示するページが表示されます。基本的にフェイスブックと同じです。

私が作成する必要があるルートは何ですか。私はこれを行いましたが、たとえば誰かがhttp://www.mywebsite.com/usersと入力するとリダイレクトループが発生し、たとえばユーザーのリストが表示されます

        routes.MapRoute(
        name: "HomeIndexWithParam",
        url: "{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
4

1 に答える 1

0

これを機能させるには、いくつかのルートを作成する必要があります。ルートを操作するときは、順序が重要であることに注意してください。したがって、最も具体的なルートを最初に配置します。

まず、あらかじめ決められたコントローラーのルートを作成します。これらは常に同じルートです。この場合、「ユーザー」ルートは次のとおりです。

routes.MapRoute(
    name: "Users",
        url: "users",
        defaults: new { controller = "Users", action = "Index" });

次に、ユーザープロファイルを担当するルートをたどります。

routes.MapRoute(
        name: "UserProfile",
        url: "{username}",
        defaults: new { controller = "User", action = "Profile" });

「ユーザー名」が所定のパターンに従っている場合(ユーザー名は4〜16文字、数字とテキストのみを許可するなど)、制約が満たされた場合にのみ実行されるように制約を追加することをお勧めします

ユーザーコントローラーのプロファイルアクションメソッドで、ユーザー名を取得し、ユーザー名が見つかった場合は、ユーザーのプロファイルページのビューを返します。それ以外の場合は、ユーザーをホームページにリダイレクトします。

最後に、デフォルトルートがあります。

routes.MapRoute(
        name: "Home",
        url: "",
        defaults: new { controller = "Home", action = "Index" });

これが理にかなっていることを願っています。

于 2013-01-29T18:49:21.323 に答える