2010-11-25 14 views
0

は、私のようなものに、標準のASP.NET MVCのURLルートオブジェクト指向URLスキームは2

http://example.com/Controller/Action[/Id] 

を変更したいのですが些細なことですが、私はデフォルト値を扱う際に問題に陥っています。これらのURLが必要です

http://example.com/Controller/ -> Maps to Index() -> List of items 
http://example.com/Controller/Create 
http://example.com/Controller/Id[/Details] -> Maps to Details(id) 
http://example.com/Controller/Id/Edit -> Maps to Edit(id) 
http://example.com/Controller/Id/Delete -> Maps to Delete(id) 

Yikes!これは素晴らしいデフォルトのものの代わりにかなりのルートを意味します。または、URLの途中でデフォルト値でURLパラメータを使用できますか?

次のステップでは、DBレコードID(id)の代わりにフレンドリな(しかし一意の)オブジェクト参照(たとえば、顧客名、それが一意であると仮定しよう)を使用します。以下のような:ページ

http://example.com/Controller/Name[/Details] -> Maps to Details(id) 

これまでのところは良いが、私はそれが編集のためにこれを使用します(そしておそらく削除)することをお勧めしますよく分からない:編集フォームは、ユーザーがオブジェクト名を変更することができます、可能性につながりますURLのミスマッチ。 URLの編集でIDに固執する必要がありますか?

誰もこのようなURLを経験しましたか?アイデアを階層的なシステムにプッシュしましたか?これはすべて良いアイデアですか、それとも私は利益よりもトラブルに陥るでしょうか?

TIAあなたの考えです。

答えて

-1

これを試してみてください:

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

コントローラは、デフォルトで家に行くと、他の賢明を言わないのindexアクションを起動します。 Idもオプションです。私が実際に変更したのはパラメータの順序だけでした。

質問の回答は。ユーザーがログに記録されていて、プロフィールを編集している場合、たとえば、Cookieなどの他の場所から編集するIDを取得できます。私は私のユーザー管理でこれを行います。 URL /ユーザー/編集は、ログインしているユーザーに固有のものです。

+5

オプションのパラメータはURLの末尾になければならないため、これは機能しません。 –

+0

ああ、それを知らなかった。うーん.. – gligoran

+0

gligoran、私はidが指定されていない場合を処理するためのより多くのルートが必要になります。とにかくありがとう –

2

これは、IDパラメータが常にURLに存在する場合にのみ可能です。明白な理由から、オプションのパラメータはURLの末尾になければなりません。または、それらを明確にすることは不可能です。

関連する問題