是否可以基于子域创建 ASP.NET MVC 路由? [英] Is it possible to make an ASP.NET MVC route based on a subdomain?

查看:19
本文介绍了是否可以基于子域创建 ASP.NET MVC 路由?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有可能使用子域信息来确定其路由的 ASP.NET MVC 路由?例如:

Is it possible to have an ASP.NET MVC route that uses subdomain information to determine its route? For example:

  • user1.domain.com 转到一个地方
  • user2.domain.com 转到另一个?
  • user1.domain.com goes to one place
  • user2.domain.com goes to another?

或者,我可以使用 username 参数使这两个控制器/操作都转到同一个控制器/操作吗?

Or, can I make it so both of these go to the same controller/action with a username parameter?

推荐答案

您可以通过创建新路由并将其添加到 global.asax 中 RegisterRoutes 中的路由集合来实现.下面是一个非常简单的自定义路由示例:

You can do it by creating a new route and adding it to the routes collection in RegisterRoutes in your global.asax. Below is a very simple example of a custom Route:

public class ExampleRoute : RouteBase
{

    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        var url = httpContext.Request.Headers["HOST"];
        var index = url.IndexOf(".");

        if (index < 0)
            return null;

        var subDomain = url.Substring(0, index);

        if (subDomain == "user1")
        {
            var routeData = new RouteData(this, new MvcRouteHandler());
            routeData.Values.Add("controller", "User1"); //Goes to the User1Controller class
            routeData.Values.Add("action", "Index"); //Goes to the Index action on the User1Controller

            return routeData;
        }

        if (subDomain == "user2")
        {
            var routeData = new RouteData(this, new MvcRouteHandler());
            routeData.Values.Add("controller", "User2"); //Goes to the User2Controller class
            routeData.Values.Add("action", "Index"); //Goes to the Index action on the User2Controller

            return routeData;
        }

        return null;
    }

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        //Implement your formating Url formating here
        return null;
    }
}

这篇关于是否可以基于子域创建 ASP.NET MVC 路由?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆