デフォルトでは、urlが'mydomain'の場合、コントローラーのホームに移動します。アクション=インデックス。
ただし、インデックスアクションにパラメータがある場合、URLは次のようになります。
mydomain/home/index?name=John
取得したいです:
mydomain?name=John
そのようなURLを作成するために何を定義する必要がありますか?
ありがとう、
ヨセフ
デフォルトでは、urlが'mydomain'の場合、コントローラーのホームに移動します。アクション=インデックス。
ただし、インデックスアクションにパラメータがある場合、URLは次のようになります。
mydomain/home/index?name=John
取得したいです:
mydomain?name=John
そのようなURLを作成するために何を定義する必要がありますか?
ありがとう、
ヨセフ
正しいURLは次のとおりです。
http://mydomain.com/?name=John
デフォルトルート設定が与えられると、これはコントローラーでIndex
アクションを呼び出し、パラメーターを渡します。Home
name
URLに関するリクエストmydomain?name=John
を考慮する限り、これは整形式のURLには見えません。
本当にあなたが欲しいmydomain/home/index?name=John
とmydomain?name=John
あなたのサイトのあなたのURLとして?
ルーティングエンジンを修正した場合、ルートはとになる可能性がありmydomain/home/index/john
ますmydomain/john
。これは私にとってはより正しいでしょう。
それはあなたが何をしようとしているのですか?
その場合、ホームコントローラーで名前の文字列パラメーターを受け入れるインデックスアクションがあると仮定すると、global.asaxを変更し、デフォルトルートを変更して、次のように標準のデフォルトルートの下にルートを追加できます。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", name= UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"NameOnly", // Route name
"{name}", // URL with parameters
new { controller = "Home", action = "Index" } // Parameter defaults
);
文字列ベースのパラメータはすべてに一致するため、名前のみのルートを下部に配置するようにしてください。したがって、より明示的なパラメータを最初に一致させる必要があります。