MVC 3 динамическая маршрутизация для размещенного сайта - PullRequest
2 голосов
/ 08 декабря 2011

Я работаю над сайтом MVC 3, размещенным на GoDaddy, и мне нужно хранить динамические переменные в URL.Примерно так:

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

Последний будет лучшим.

Сайт позволяет пользователям создавать собственные списки, категории списков,и список предметов.Категория списка может быть чем-то вроде Sports или News, список может быть NBA Teams или Politics, а элемент списка будет Lakers или Pres. Obama.Пользователь может сгенерировать любой из 3 (только без дубликатов).

Моя цель состоит в том, чтобы сделать URL-адрес похожим на http://sports.example.com/nba/lakers и направить пользователя на Controller = "Items", Action = "Details" с параметрами Cat = "sports", List = "nba", Item = "lakers" и если пользователь указывает Action (например, «Редактировать», «Удалить» и т. д.), он заменяет Details.

Я не очень знаком с IIS (точнее, с IIS через GoDaddy), поэтому IDK, еслиСубдоминирование будет работать (но это конечная цель), и, если это возможно, я хотел бы знать, что мне нужно сделать (например, сам хост + шаги).

Спасибо

1 Ответ

2 голосов
/ 08 декабря 2011

этот раздел является доменом 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 / спорт / нба / Lakers.

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

EDIT:

Я не могу комментировать слишком много о производительности подстановочных DNS-записей и т. Д. Единственная проблема, которую я вижу, это то, что вам нужно написать собственный обработчик маршрута, а затем вам потребуется получить субдомен Url, например. sport и измените значение action или id для обработки ваших URL субдоменов. Вот пример изменения маршрута с помощью обработчика маршрута: asp.net MvcHandler.ProcessRequest никогда не вызывается

...