2011-06-28 15 views
0

パラメータとしてURLを受け取るMVCアプリケーションを作成したいとします。それを達成する方法?パラメータとしてのURL MVC3 URL

  1. URLに直接パラメータを入力しますか?
  2. GetメソッドとPostメソッドを作成してGetメソッドからPostメソッドにURLを内部的に渡しますか?

私は最初のオプションを試してみましたが、それでもhttp://website/controller/method/http://otherurl.com

のようなURLを受け取ることができない私はこれを達成するために、新しいルートを作成する必要がありますか?

ありがとうございました。

答えて

2

私は、クエリ文字列パラメータを使用して、あなたをお勧めしても値が適切にURLエンコードされていることを確認します:

http://website/controller/method?url=http%3A%2F%2Fotherurl.com 

を、アクション内:

public ActionResult Method(string url) 
{ 
    // The url parameter here will equal to "http://otherurl.com" 
    ... 
} 
0

URLは、2つの部分で構成最初の部分はドメイン(私は思う)であり、ここで重要なのはクエリー文字列と呼ばれる2番目の部分です。 (第1部分は必須、第2部分は必須ではない)。

これは一例です:

http://your-domain-here/stuff?page=1 

pageは、クエリ文字列変数です。 URLの2つの部分を区切る?に気付かなければなりません。私はあなたのURLに1つも見ませんので、MVCルーティングエンジンはこの全体のURLを登録された経路(見つからない)と照合しようとします。

いいえ、新しいルートを作成する必要はなく、新しい「パス」が必要なときに新しいルートが作成されますが、その場合はURLを分けるためにURLを改善する必要がありますクエリ文字列からのルート。

希望に役立ちます。

0

あなたは、のような 何か別のルートを作成する必要があります:

http://website/controller/method/http://otherurl.com 

になるでしょう

routes.MapRoute("UrlByParam", //Route Name 
"{controller}/{action}/{url}", //Url Pattern 
new { controller = "DefaultController", action = "DefaultAction" }); //Defaults 

をそして、あなたはまた ので、あなたのURLをエンコードする必要があり、

http://website/controller/method/http%3A%2F%2Fotherurl.com 
関連する問題