C# 托管站点的MVC 3动态路由
我在一个由GoDaddy托管的MVC3站点上工作,我需要在URL中存储动态变量。比如: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个选项中的任意一个(仅无重复项) 我
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。