Question

J'ai une application ASP.NET a été déployé dans un Net Framework 1.1 sur le serveur Windows 2000 qui j'utilise maintenant sur un Windows 2008 Server à l'aide 2.0.50727. Nous utilisons le tilde (~) pour résoudre un chemin absolu dans de nombreux domaines de l'application et il fonctionne pour des choses comme asp: commandes de lien hypertexte (avec l'exécution à des balises de serveur), mais pour nos contrôles DataGrid liés qui utilisent HyperLinkColumns pour créer liens basés sur des valeurs d'identification au retour de notre base de données, le tilde devient écrit à la page.

Ce code:

HyperLinkColumn oLink = new HyperLinkColumn();
oLink.DataNavigateUrlField = "IdField";
oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";

est le dumping ceci à la page:

<a href="~/Here171201.aspx">

Ce qui a changé entre les versions de IIS Framework ou .NET pourrait être à l'origine cette fonctionnalité ne fonctionne plus? Le tilde était certainement en 1.1 résout - J'ai le même code exact déployé sur une dizaine de serveurs 1.1 cadres dans notre organisation. Malheureusement, la classe qui définit la DataNavigateUrlFormatString n'a pas accès à la page, donc je vais devoir faire quelques kludging pour insérer le travail autour Page.ResolveUrl ...

Était-ce utile?

La solution

Je ne suis pas au courant de rien changer, mais je ne l'utilise pas HyperLinkColumns (je préfère le contrôle que la colonne Template), donc je ne l'ai pas regardé pour tout changement.

Une possibilité comme une aide à la bande proverbiale est de changer cette ligne:

oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";

à ceci:

oLink.DataNavigateUrlFormatString = Page.ResolveUrl("~/Here{0}.aspx"); 

Si ma mémoire est bonne il y avait des problèmes lors du passage au Master Pages et en utilisant le « ~ » de contrôles utilisateur, mais il a été un moment que je lis quelque chose comme ça.

Autres conseils

Je ne pense pas que le HyperLinkColumn d'un Datagrid résout automatiquement l'URL dans un chemin absolu. IIRC, la propriété DataNavigateUrlFormatString appelle en interne String.Format() uniquement sur le format fourni. Etes-vous sûr cela a fonctionné correctement sur .NET 1.1? IIRC, .NET 1.1 n'a pas la résolution d'URL automatique basée tilde.

À mon avis, vous devez utiliser la solution présentée par Stephen (appel Page.ResolveUrl manuellement.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top