Frage

Ich habe ursprünglich eine ASP.NET-Anwendung zu einem .NET 1.1 Framework auf Windows 2000 Server bereitgestellt, die ich jetzt auf einem Windows 2008 Server sind mit mit 2.0.50727. Wir verwenden die Tilde (~) in einen absoluten Pfad in vielen Bereichen der Anwendung zu lösen und es funktioniert für Dinge wie Asp: Hyperlink steuert (mit Lauf bei Server-Tags), aber für unsere gebundenen Datagrid Kontrollen, die HyperLinkColumns verwenden zu erstellen Links basierend auf ID-Werten aus unserer Datenbank zurückgegeben wird die Tilde auf der Seite geschrieben zu werden.

Mit diesem Code:

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

Dumping dies auf der Seite:

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

Was zwischen den Versionen von IIS oder .NET Framework geändert könnte diese Funktionalität nicht mehr verursachen arbeiten? Die Tilde wurde die Lösung auf jeden Fall in 1.1 - Ich habe den exakt gleichen Code auf einem Framework 1.1-Servern in unserer Organisation Dutzend im Einsatz. Leider, dass die Klasse die DataNavigateUrlFormatString setzt keinen Zugriff auf die Seite haben, also werde ich einige kludging tun müssen, um die Page.ResolveUrl Arbeit einfügen ...

War es hilfreich?

Lösung

Ich bin von nichts bewusst zu ändern, aber ich weiß nicht verwenden HyperLinkColumns (Ich ziehe die Steuerung, die die Vorlage Spalte liefert), so habe ich nicht für Änderungen aussah.

Eine Möglichkeit als sprichwörtlich pflaster ist diese Zeile zu ändern:

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

folgt aus:

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

Wenn der Speicher dient es einige Probleme, als gehen Seiten an den Meister und mit dem ‚~‘ von User Controls, aber es ist schon eine Weile her, seit ich so etwas lesen.

Andere Tipps

Ich glaube nicht, dass der HyperlinkColumn eines Datagrid löst automatisch die URL in einen absoluten Pfad. IIRC, die DataNavigateUrlFormatString Eigenschaft ruft intern String.Format() nur auf dem mitgelieferten Format. Sind Sie sicher, dass diese korrekt auf .NET 1.1 gearbeitet? IIRC, .NET 1.1 nicht Tilde-basierte haben automatische URL-Auflösung.

Meiner Meinung nach, sollten Sie die Lösung von Stephen präsentiert nutzen (Call Page.ResolveUrl manuell.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top