ASP.NET MVCでカスタムルートハンドラーを作成するにはどうすればよいですか?
1313 次
1 に答える
6
ASP.NET MVCを使用すると、Global.asax.csでカスタムルートハンドラーを簡単に作成できます。
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { action = "Index", id = "" }
).RouteHandler = new SubDomainMvcRouteHandler();
これにより、すべてのリクエストが指定されたカスタムRouteHandlerによって処理されます。この特定のハンドラーの場合:
public class SubDomainMvcRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
{
return new SubDomainMvcHandler(requestContext);
}
}
その後、好きなことを行うことができます。この場合、SubDomainMvcHandlerはURLからサブドメインを取得し、それをプロパティとしてコントローラーに渡します。
public class SubDomainMvcHandler : MvcHandler
{
public SubDomainMvcHandler(RequestContext requestContext) : base(requestContext)
{
}
protected override void ProcessRequest(HttpContextBase httpContext)
{
// Identify the subdomain and add it to the route data as the account name
string[] hostNameParts = httpContext.Request.Url.Host.Split('.');
if (hostNameParts.Length == 3 && hostNameParts[0] != "www")
{
RequestContext.RouteData.Values.Add("accountName", hostNameParts[0]);
}
base.ProcessRequest(httpContext);
}
}
于 2009-04-16T14:12:22.787 に答える