我正在开发由GoDaddy托管的MVC 3网站,我需要在URL中存储动态变量。类似的东西:
http://www.example.com/{Cat}/{List}/{Item}/{Action}
或
http://{Cat}.example.com/{List}/{Item}/{Action}
后者将是最好的。
该网站允许用户创建自定义列表,列表类别和列表项。列表类别可以是Sports
或News
,列表可以是NBA Teams
或Politics
,列表项可以是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可以工作(但这是最终目标),如果有可能,我想知道我需要什么要做(即自我主持+步骤)。
由于
答案 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