2011-12-07 4 views
2

Je travaille sur un site MVC 3 hébergé par GoDaddy et j'ai besoin de stocker des variables dynamiques dans l'URL. Quelque chose comme:Routage dynamique MVC 3 pour site hébergé

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

Ce dernier serait le meilleur.

Le site permet aux utilisateurs de créer des listes personnalisées, des catégories de liste et des éléments de liste. Une catégorie de liste pourrait être quelque chose comme Sports ou News, une liste pourrait être NBA Teams ou Politics, et un élément de liste serait Lakers ou Pres. Obama. L'utilisateur est capable de générer l'un des 3 (seulement aucun doublon).

Mon but est de rendre l'URL quelque chose comme http://sports.example.com/nba/lakers et que l'utilisateur dirigé vers Controller = "Items", Action = "Details", avec params Cat = "sports", List = "nba", Item = "lakers" et si l'utilisateur spécifie un Action (comme modifier, supprimer, etc.), il remplace Details.

Je ne suis pas très familier avec IIS (plus précisément IIS via GoDaddy), donc IDK si la sous-domaine fonctionnerait (mais c'est le but ultime) et si c'est possible, j'aimerais savoir ce que je voudrais besoin de faire (c.-à-d. auto-hôte + étapes).

Merci

Répondre

2

cette section est un domaine http://sports.example.com/ Translating à l'adresse physique par exemple 203.10.01.1 vous devrez enregistrer un sous-domaine avec GoDaddy. ASP.NET MVC gérera ... la section nba/lakers. Votre domaine sera donc http://sportworldwide.com/ avec des sous-domaines comme http://nba.sportworldwide.com/lakers. Si vous voulez utiliser MVC 3 seulement. essayer quelque chose comme

sportworldwide.com/sport/nba/lakers.

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

EDIT:

Je ne peux pas commenter trop sur les performances ou etc des enregistrements DNS génériques Le seul problème que je vois est que vous aurez besoin d'écrire un gestionnaire d'itinéraire personnalisé, vous aurez besoin pour obtenir la partie sous-domaine d'Url par exemple sport et modifiez l'action ou la valeur d'identifiant pour gérer vos URL de sous-domaine. ici est par exemple de modifier la route à travers un routehandler: asp.net MvcHandler.ProcessRequest is never called

+2

Merci pour l'aide :) Si je auto héberger le site (donc ayant un contrôle total sur IIS), est-ce qui me permettra d'être plus flexible sur les sous-domaines ? Ou les sous-domaines sont-ils gérés en dehors d'IIS (dans l'un des serveurs DNS ou ailleurs)? J'ai vu des sites qui ont des sous-domaines dynamiques, donc ça doit être possible, je ne sais pas comment ils le font! –

+2

bien, vous aurez besoin de regarder dans le filtre ISAPI. Voici un article sur les avantages et les inconvénients - où mettre la main sur le filtre de réécriture ISAPI. Pour IIS, voir http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/ – Nickz

+2

qu'en est-il d'un enregistrement DNS générique? Si je viens d'ajouter un DNS A Record générique et l'ai transmis à l'adresse IP de mon site, cela me permettrait-il de filtrer en fonction du sous-domaine? –