2010-11-21 30 views
0

HTML.RouteLink()を使用して既存のURLに追加する方法はありますか?たとえば、私はHTML.RoutLinkを使用して既存のURLに追加する

<%: Html.RouteLink(link.Text, link.RouteValues) %> 

私のコントローラはページです、私の行動はsomestringです。だから、生成されたURLはこれで結構です

はlocalhost /ページ/ somestring

だろう。しかし、私は私が

はlocalhost /管理/ページ/ somestring

代わり

はlocalhost /ページ/ somestring

このであることがhttp://localhost:1241/Admin/セクションを訪問したときに生成されたURLをリンクしますlocalhost/Page/somestring urlは私のglobal.asxファイルに設定され、ページを表示するようにルーティングされます。localhost/Admin/Page/somestring URLはページを編集するためにルーティングされます。

私はこれが意味をなすと願っています。ここで

タイロン

は、あなたが本当に徹底的にこの質問に答えるために十分な情報を与えられていないあなたにいくつかのアイデア


routes.MapRoute(null,"Pages/{page}", new { controller = "Pages", action = "Page" }); 

routes.MapRoute("Edit Pages", "Admin/Page/{page}",new { controller = "Admin", action = "EditPage", id =UrlParameter.Optional }); 
+0

「管理者」セクションについてお聞きしますか?これはあなたのglobal.asaxでどのように設定されていますか?あなたはエリアを使用していますか? –

+0

例として、私は自分のadminセクションにログインし、url localhost/Adminにリダイレクトされます。私は自分のフロントエンドセクションで使用しているのと同じナビゲーション部分ビューを管理セクションで使用しています。上記の私の投稿を編集しました。 – Tyrone

答えて

0

を与えることができる私の2つのルートがあります。私が理解しているように、管理者であってもURLを生成していなくても、同じコードを使用する部分があります。しかし、あなたが管理者であるかどうかに応じて、同じコードで異なるURLを生成する必要があります。

ここでのトリックは、一致させるルートのデフォルトと一致するルート値が必要なことです。

Html.RouteLink(linkText, new {controller="Pages", action="Page", page = thePage}) 

しかし、管理者のバージョン

Html.RouteLink(linkText, new {controller="Admin", action="EditPage", page = thePage}) 

ですから、部分的に取得することを確認されて何をする必要があるかにリンクする:この場合

は、非管理者にリンクします右の値はどのコンテキストで使用されているかによって決まります。

+0

RouteLinkメソッドの独自のバージョンを作成し、内部でIsAuthenticated(あなたがあなたの管理者であるかどうかを判断する)と内部的にRouteLinkをコントローラ(ページまたは管理者)の正しい値で内部的に呼び出し、 –

関連する問題