Wenn ich die abgeleitete Klasse testA
a PlaceHolder
übergebe, die eine Hyperlink
enthält, mit einer URL, die mit beginnt
eine Tilde, löst es richtig auf.
Wenn ich jedoch testB
übergebe
(identisch abgesehen davon erbt von
System.Web.UI.UserControl
) gleich PlaceHolder
Es
macht es wörtlich (nicht
transformiere / lösche das '~')
Irgendwelche Ideen?
%Vor%Dies ist ASP.NET
Wenn Sie von System.Web.UI.UserControl
erben und Ihr Steuerelement nicht mit einer ascx
-Datei verknüpfen, wird Ihr Steuerelement TemplateSourceVirtualDirectory
nicht gesetzt, dies wird von der ResolveClientUrl
-Methode benötigt - wenn es leer ist oder die URL leer ist wird zurückgegeben AS IS .
Um Ihr Problem zu lösen, setzen Sie einfach AppRelativeTemplateSourceDirectory
:
Ein UserControl ist normalerweise einer ascx
-Datei zugeordnet das definiert sein Markup. Solche Steuerelemente sollten zuvor mithilfe von TemplateControl.LoadControl () instanziiert werden Sie werden der Seite hinzugefügt, um eine Ereignisaufholung durchzuführen.
Ich vermute, dass ein Ereignisabgleich nicht stattfindet, da Sie LoadControl()
nicht aufrufen, so dass Hyperlink
des NavigateUrl
niemals eine Chance hat, ordnungsgemäß aufgelöst zu werden.
Tags und Links c# asp.net resolve user-controls