2012-03-18 17 views
1

私はASP.NET MVC 3が新しく、ASP.NET MVCを使用してURLパラメータとしてusername/idを使用したいと思います。例えば私はURLパラメータとしてユーザ名を持っています

私が持っていると思います:

http://mylink.com/username 

または

http://mylink.com/id 

を私HomeControllerアクションProfileにリダイレクトします。

これは可能ですか?

私は

routes.MapRoute(
      "Profile", // Route name 
      "{controller}/{id}", // URL with parameters 
      new { controller = "Home", action = "Profile", id = UrlParameter.Optional } // Parameter defaults 
     ); 

を使用して新しいルートを作成しようとしましたが、それは動作しません。

ありがとうございます。

+0

http://mylink.com/mycontroller/id –

+0

@COLDTOLDのようにurl somethinkの隣にコントローラ名が必要なので、ほとんど動作しない可能性があります。コントローラ名は必要ありません。 URLパターンは完全に合法です。 @salamis、あなたのプロフィールアクションメソッドの署名は何ですか? 'string username'か' int? id'? – danludwig

+0

string username mate。 – glarkou

答えて

3

あなたは後のURLパターンを達成できるはずです。ここでは動作するはずの例である:

ルートコード:

// be sure to register your custom route before the default routes 
routes.MapRoute(null, // route name is not necessary 
    "{username}", 
    new { controller = "Home", action = "Profile", } 
); 

routes.MapRoute(null, 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

コントローラーコード:私はせずにロードされた質問に答えることを好まない1

コメントする

public class HomeController : Controller 
{ 
    public ActionResult Profile(string username) 
    { 
     // http://mylink.com/myusername should hit this method 
    } 
} 

レスポンスあなたのプロジェクトや設計しているURLスキーマについて知っています。しかし、私はそれが正しいaway.Youでの問題は、あなたが持っているしたいとご覧に少なくとも2 URLの:

が、これはあなたがいずれかを持っていないことを意味し、{ユーザー名}ユーザー名が「About」のユーザー。それ以外の場合、システムは、どのページに情報を提供するか、またはユーザー名「約」のプロファイルページを提供するかを決して知ることができません。 MVCでは、URLは大文字と小文字を区別しません。

ページが多いほど大きなアプリケーションを作成する場合は、プロファイルアクションのURLの範囲を指定することをおすすめします。おそらく、もっとこのような何か:言ったことで

、あなたはまだあなたがしたいURLパターンを達成することができます。しかし、ユーザーが他のルートと一致するユーザー名を持たないようにいくつかの検証を追加する必要があり、より多くのカスタムルートを記述する必要があります。あなたは本当に自分のためにもっと仕事をしています。あなたはルートにこのような何かをしなければならないでしょう:

// more specific routes must be added first 

routes.MapRoute(null, 
    "About", 
    new { controller = "Home", action = "About", } 
); 

routes.MapRoute(null, 
    "{username}", 
    new { controller = "Home", action = "Profile", } 
); 

routes.MapRoute(null, 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

上記のルートは約アクションに約用/リクエスト、およびプロファイル・アクションに他のすべて/ somestring要求にマッチします。

+0

ありがとうたくさんの仲間。それは働いている。 @stackoverflow.com/questions/235118/asp-net-mvc-route-to-usernameと特に第2の解決策が投稿された回答を確認することは可能ですか? 'http:// mylink.com/About'やその他の静的なページを追加したい場合に備えて、これらの例外を追加できますか?あなたの助けをもう一度ありがとう。 – glarkou

+0

ありがとうたくさんの仲間!真剣に! – glarkou

関連する問題