2012-01-09 12 views
0

私はURLからリクエストパラメータを使用する方法は、URLを上の例ではhttp://www.domain.ext/default.aspx?id=123&name=abc要求URLパラメータ

をIS-場合

たちはstring myid = Request["id"];としてページdefault.aspxから2パラメータすなわちidnameを要求することができていますstring myname = Request["name"];

しかし、FacebookのプロフィールのURLには、この種のものが表示されます。そこに任意のページ名も文句を言わないと構文で名前を定義するために

http://www.facebook.com/john.deoまたは

http://www.facebook.com/madcoder。どのようにC#のURLからパラメータ(john.deoまたはmadcoder)を要求する?

+0

実際にはパラメータではなく、URLの一部です。私はあなた自身がURLからそれを解析しなければならないと思う。実際に必要な場合は、URL部分をグラフAPIに送信して、代わりにユーザーIDを返すことができます。 – Rup

答えて

3

これは、htaccessファイルにルールを追加することで実現できます。

RewriteRule ^([A-Za-z0-9_-]*)/$ index.php?name=$1 

このルールを使用すると、ブラウザに入力する場合は、「名前」パラメータを要求することにより、値「ジョン」を得ることができますhttp://www.mydomain.co.uk/johnことを意味します。

+0

素晴らしい!しかし、私はhtaccessがApacheサーバーのためだと思いますか?私はIISで作業しています。 –

+0

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspxをご覧ください – psych

+0

恐ろしいです!あなたの情報ありがとう:) –

0

これらはURLパラメータではなく、リソースを識別するために使用されます。
正規表現を使用すると、指定したURLの "john.deo"を取得することだけが目的となります

+0

正規表現を使用して行うためのサンプルコードを私に提供できますか? –

0

すべてはソリューションの複雑さによって異なります。しかし、これを行う簡単な方法の1つは、ページルーティングを使うことです。

あなたはこのようなあなたのGlobal.asax -> Application_Startにルートを登録できます。そして、あなたの要求にフォーマットが「{名前}」のようなパラメータを指定して'routeValueDefaults'辞書に名パラメータをデフォルトにして置く

RouteTable.Routes.MapPageRoute("Route name", "requestformat", "physicalfile", checkPhysicalUrlAccess, routeValueDefaults, routeConstraints); 

'routeContstrains 'ディクショナリにその制約があります。制約は、reqular式で指定することができます。したがって、名前をすべて文字のみにする場合は、この "\ w +"のようなものを使用できます。

このパラメータは、物理ページのPage.RouteData["name"]コレクションになります。

関連する問題