2011-09-11 16 views
0

私はいくつかのルーティングを稼働させようとしてきました。私は基本的には、このURLをしたい:asp.net c#app routing

www.example.com/SomebodysName

または

www.example.com/agents/somebodysname

...に行く..to

www.example.com/portfolio.aspx?ran=somebodysname

私はMSDNの例を使って、globax.asaxを次のように使用しようとしました:

void Application_Start(object sender, EventArgs e) 
    { 
     RegisterRoutes(System.Web.Routing.RouteTable.Routes); 

    } 

public static void RegisterRoutes(System.Web.Routing.RouteCollection routes) 
    { 
     routes.MapPageRoute("", "agents/{name}", "portfolio.aspx?ran={name}"); 
    } 

しかし、私はそれを動作させることができません、それはルーティングが名前空間System.Webに存在しないと言います。 どのように私はそれがこの方法またはおそらく別の方法(?web.configファイル)を動作するように取得することができます

+0

質問を編集してエラーを表示し、コードがどのように設定されているかを提案してください。 –

答えて

1

あなたのGlobal.asaxのは、のためにusingステートメントがあることを確認:あなたはせずに、このようなあなたのルートをマップすることができ

using System.Web.Routing; 

を対象の物理aspxページ上のparam:

routes.MapPageRoute("AgentPortfolioByName", "agents/{name}", "portfolio.aspx"); 

portfolio.aspx.csでコードビハインドでは、あなたは、単にこのようname値を参照することができます

string name = Page.RouteData.Values["name"].ToString(); 

これにより、ASP.NET 4以降のサイトで、期待通りにURLルーティングが機能するようになります。

+0

私のGlobal.asaxのは、次のようになります。 '<%アプリケーション言語= "C#の" %@> ます。<%@ Import Namespace = "System.Web.Routing" %> <スクリプトにrunat = "サーバー"> void Application_Start(オブジェクト送信者、EventArgs e) { RegisterRoutes(System.Web.Routing.RouteTable.Routes); }パブリック静的ボイドRegisterRoutes(System.Web.Routing.RouteCollectionルート) {routes.MapPageRoute( "AgentPortfolioByName"、 "薬剤/ {名前}"、 "portfolio.aspx")。 } ' しかし、私はまだ型または名前空間名、名前空間「のSystem.Web」に存在しない「ルーティング」を同じ組立誤差に エラーを取得しています(AR .. – Jesper

+0

@JesperはそれがASP.NETです** 3.5 **または** 4.0 4.0 ** 'webforms'ウェブサイトはあなたが設定していますか? – balexandre

+0

@balalexandre。わかりません:)参考文献では、バージョン3.5.0.0と書かれていますが、ビルド - >ターゲットフレームワーク4.0。また、これはWebアプリケーションプロジェクトではないWebサイト(フォルダ構造)なので、global.asaxにはコードビハインドファイルがありません。 – Jesper