可以在MVC 4.0中完成此类路由

时间:2012-11-25 03:34:23

标签: c# asp.net-mvc-4

我可以将路径配置为:

        routes.MapRoute(
        name: "Default",
        url: "{id}.zeko.com",
        defaults: new { controller = "App",
                        action = "GetDetailsById", 
                        id = UrlParameter.Optional
                      }
               );

我想将id作为我方法的参数。告诉我我错在哪里?

3 个答案:

答案 0 :(得分:1)

好吧我自己想出来......我们必须拆分每个id创建后得到的域名。

答案 1 :(得分:0)

我不完全确定这是可能的。我相信MVC中的路由引擎默认不处理域请求。您可以做的是添加一个事先处理请求的IIS处理程序,或者我在Web窗体中完成的操作(我不确定如何在MVC中完成此操作)是调用一个方法去除我的子域名“Page_Load”方法,然后根据需要使用该变量。下面是我使用的函数示例,请记住,我的应用程序只能使用单个子域,例如“subdomain.maindomain.com”

private static string GetSubDomain(Uri url)
    {
        try
        {
            string host = url.Host;
            if (host.Split('.').Length > 2)
            {
                int firstIndex = host.IndexOf(".");
                string subdomain = host.Substring(0, firstIndex);

                return subdomain;
            }
        }
        catch
        {

        }

        return string.Empty;
    }

答案 2 :(得分:0)

我发现了这篇文章,但是它需要提前知道每个可能的子域名,而我之前的答案允许使用动态子域名。希望这些有所帮助!

Is it possible to make an ASP.NET MVC route based on a subdomain?