私の MVC3 Web サイトには、次のルート定義があります。
routes.MapRoute(
"FB", // Route name
"fb/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
).RouteHandler = new RH();
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
私のカスタム「RH」ハンドラーのコードは
public class RH : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
//here I store somewhere that 'fb' prefix is used, so logic is different in some places
return base.GetHttpHandler(requestContext);
}
}
私が達成したいのは、私のウェブサイトが「fb」サブパスプレフィックスでアクセスされると、私のウェブサイトロジックが少し異なる方法で実行されることです。
問題は、自分のサイトに通常どおりアクセスしたとき (例: http://localhost )、次に実行したときです。
Url.Action('action' 'controller')
、出力は「http://localhost/fb/controller/action」です。
私のサイトが 'fb' プレフィックス付きサブパスでアクセスされたとき、私の Url.Action は出力 /fb/controller/action パスを呼び出し、Web サイトに通常どおり ('fb' プレフィックス サブパスなしで) アクセスすると、達成したいと考えています。 Url.Action 呼び出しの出力 /controller/action
主なことは、 /fb/controller/actions は、サイトが /controller/action 形式でアクセスされるときと同じコントローラー/アクションにルーティングする必要があるということです。
「fb」ルートは、「fb」プレフィックスを使用したときに一時的な情報を保存するために必要です。