2009-03-06 18 views
2

私は実際のURLを取得してルート自体で使用する必要があるプロジェクトに取り組んでいます。私が見て、読んで、テストしているすべてのものは、ルートがサイトのURLの後にアイテムをつかむことを可能にします。これは私が試したことであり、サイトが空白であると言うたびに(これは恐らくデフォルトの空白のためだと思われます)。ルートにルートURLも利用できるようにするために私に骨を投げてもいいですか?目標は、URLを処理して、ビューの中で一度、別の勇気に向かわせる1つのウェブサイトです。ここでASP.NET MVCのルートにWebサイトのURLを渡します

はあなたの助けを大幅に高く評価されて

  routes.MapRoute(
      "PageRouter", 
      "{site}/{*url}", 
      new { controller = "PageRouter", action = "RoutePage", site = "", url = "" } 
     ); 

localhostの

の外に、私が試してみましたコードが、運です。事前に感謝します

答えて

0

ちょうどコントローラのアクション内でHttpContext.Request.RawUrlを使用する方法について。私はここで何かを逃しているかもしれない。あなたが読んでみたいURLはどこから来ますか?それは現在のページか別のページですか?

+0

現在のページはどこにありますか。基本的にソースURLを使用する必要があります私たちがルート内にいたら、テンプレートを決定してください。ルート内の{site}プレースホルダーは、RawUrlを過ぎているようですが、使用してみて、それがどういう仕組みになっているかをご説明します。 – dodegaard

+0

Nathan .... would it代わりにGlobal.asax.csでそれを行う方が良いでしょうか?その時点でHttpContext.Requestから情報を収集できますか?カスタムテンプレートを許可するために、システムに送信される各リクエストでこれを行う必要があります – dodegaard

0

ネイサンの答えは答えの一部です。 HttpContext.Request.RawUrlを使用すると、この情報にアクセスできますが、代わりにGlobal.asax.csファイルにアクセスできます。これはApplication_BeginRequestイベントで行われます。しかし、このトリック(とこれを行うより洗練された方法を知っている場合はコメントしてください)しかし、私たちはMapRouteメソッドでピックアップできるように残りのルートパスに使用されているURLを注入する。したがって、「http://subdomain.domain.net/url」のサイトは「http://subdomain.domain.net/subdomain.domain.net/url」と表示され、MapRouteコマンドの{site}部分で取り上げることができます。これはユーザーには表示されませんでしたが、受け取った情報に基づいてアプリ内で決定を下すことができますURL。これはうまく聞こえますか?これはルートURLを吸収するために狂った方法であると思われる場合は、歓迎します。