MVC 3托管站点的动态路由

时间:2011-12-07 21:10:25

标签: c# asp.net-mvc-3 asp.net-mvc-routing

我正在开发由GoDaddy托管的MVC 3网站,我需要在URL中存储动态变量。类似的东西:

http://www.example.com/{Cat}/{List}/{Item}/{Action}
http://{Cat}.example.com/{List}/{Item}/{Action}

后者将是最好的。

该网站允许用户创建自定义列表,列表类别和列表项。列表类别可以是SportsNews,列表可以是NBA TeamsPolitics,列表项可以是Lakers或{{1 }}。用户可以生成3个中的任何一个(仅重复)。

我的目标是将网址设为Pres. Obama,并将用户路由到http://sports.example.com/nba/lakers,并使用参数Controller = "Items", Action = "Details"并且如果用户指定Cat = "sports", List = "nba", Item = "lakers"(如编辑,删除等),它取代了Action

我不是非常熟悉IIS(更具体地说是通过GoDaddy的IIS),所以IDK如果subdomaining可以工作(但这是最终目标),如果有可能,我想知道我需要什么要做(即自我主持+步骤)。

由于

1 个答案:

答案 0 :(得分:2)

此部分是转换为物理地址的域http://sports.example.com/,例如203.10.01.1您必须使用GoDaddy注册子域名。 ASP.NET MVC将处理... nba / lakers部分。因此,您的域名为http://sportworldwide.com/,其子域名为http://nba.sportworldwide.com/lakers。如果只想使用MVC 3。尝试像

这样的东西

sportworldwide.com/sport/nba/lakers。

 routes.MapRoute("DefaultSport", "sport/{action}/{id}", 
                    new { controller = "Sport",  action = "", id= "" });

编辑:

我不能过多评论通配符DNS记录性能等。我看到的唯一问题是你需要编写自定义路由处理程序,然后你需要获取Url的子域部分,例如运动并更改操作或ID值以处理您的子域名网址。 以下是通过routehandler修改路由的示例: asp.net MvcHandler.ProcessRequest is never called