C# 托管站点的MVC 3动态路由

C# 托管站点的MVC 3动态路由,c#,asp.net-mvc-3,asp.net-mvc-routing,C#,Asp.net Mvc 3,Asp.net Mvc Routing,我在一个由GoDaddy托管的MVC3站点上工作,我需要在URL中存储动态变量。比如: http://www.example.com/{Cat}/{List}/{Item}/{Action}或 http://{Cat}.example.com/{List}/{Item}/{Action} 后者最好 该网站允许用户创建自定义列表、列表类别和列表项。一个列表类别可以是类似于体育或新闻,一个列表可以是NBA球队或政治,一个列表项可以是湖人或奥巴马总统。用户可以生成3个选项中的任意一个(仅无重复项) 我

我在一个由GoDaddy托管的MVC3站点上工作,我需要在URL中存储动态变量。比如:

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

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

后者最好

该网站允许用户创建自定义列表、列表类别和列表项。一个列表类别可以是类似于
体育
新闻
,一个列表可以是
NBA球队
政治
,一个列表项可以是
湖人
奥巴马总统
。用户可以生成3个选项中的任意一个(仅无重复项)

我的目标是使URL类似于
http://sports.example.com/nba/lakers
并使用参数将用户路由到
Controller=“Items”、Action=“Details”
,如果用户指定了
操作(如编辑、删除等),它将替换
详细信息

我对IIS不太熟悉(更具体地说,是通过GoDaddy的IIS),因此我想知道子域名是否可行(但这是最终目标),如果可能的话,我想知道我需要做什么(即自我托管+步骤)

谢谢

此部分是一个转换为物理地址的域,例如203.10.01.1您必须向GoDaddy注册一个子域。ASP.NET MVC将处理。。。nba/湖人组。因此,您的域将与子域类似。如果只想使用MVC3。试试像这样的东西

sportworldwide.com/sport/nba/lakes

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


我不能对通配符DNS记录的性能等做太多评论。我看到的唯一问题是,您需要编写一个自定义路由处理程序,然后需要获取Url的子域部分,例如sport,并更改操作或id值以处理您的子域Url。 下面是通过routehandler修改路由的示例:

谢谢你的帮助:)如果我自己主持网站(从而完全控制IIS),这会让我在子域上更灵活吗?或者子域是在IIS之外处理的(在一个DNS服务器或其他地方)?我见过有动态子域的网站,所以这一定是可能的,我只是不知道他们是怎么做到的!好的,你需要查看ISAPI过滤器。这里有一篇关于优缺点的文章——从哪里可以获得ISAPI重写过滤器。对于IIS,请看一看通配符DNS记录如何?如果我只是添加了一个通配符DNS a记录并将其转发到我的站点的IP,这允许我基于子域进行过滤吗?我不能对通配符DNS记录的性能或其他方面发表太多评论。不过,你肯定可以这样做。我看到的唯一问题是,您需要编写一个自定义路由处理程序,然后获取Url的前端部分,例如sport,并更改操作值或id来处理您的子域Url。