2009-08-20 8 views
3

L'un des avantages de ASP.NET MVC est le moteur de routage. J'aime générer mes URLs et ne rien casser quand je change les routes.Comment générer des URL côté client à l'aide de ASP.NET MVC?

Cependant, je ne suis pas sûr comment je peux appliquer ce mécanisme du côté du client.

Imaginons un scénario courant où j'ai deux listes déroulantes et le contenu de la deuxième liste dépend de l'élément sélectionné dans la première liste. Je veux charger les articles de la deuxième liste de manière asynchrone, lorsque la sélection dans la première liste change.

L'URL, en utilisant la route par défaut, pourrait ressembler à ceci:/Voitures/GetModelsForBrand/Honda

Assez facile ...

var url = '/Cars/GetModelsForBrand/' + $("#brands").val(); 

Et si je change le routage et l'URL devient:/Honda/GetModels

Je viens de casser mon code d'une manière non évidente.

Est-il possible de générer des URL du côté client?

Répondre

2

Nous avions un scénario similaire et nous l'avons résolu en générant un lien vers l'action, puis en y ajoutant nos paramètres ultérieurement. Nous avons également eu un cas où nous étions incertains de l'action et voulions le mettre au moment du client. Dans ce cas nous avons généré un lien vers Index et fait un remplacement côté client. Par générer un lien, je veux dire en utilisant la méthode d'assistance Html.ActionLink

+0

Voulez-vous dire comme ça? var url = '<% = Html.BuildUrlFromExpression (x => x.GetModelsForBrand ("[BRANDNAME]"))%>'; var brandUrl = url.replace ('\\ [BRANDNAME \\]', $ ("# marques"). Val()); Pas trop propre, mais je suppose que ça pourrait faire l'affaire. –

+0

Oui, c'est ce que je veux dire. Je ne suis pas sûr de ce que la vitesse de remplacement de chaîne est en Java et si vous avez beaucoup de ceux-ci, vous pourriez vouloir trouver une meilleure façon. –

+0

+1 sur se débarrasser des chaînes magiques – mxmissile

Questions connexes