2009-08-21 8 views
0

Muss die Nummer TemplateControl.ResolveUrl() angerufen werden, bevor sie an TemplateControl.LoadControl() übergeben wird?Muss ResolveUrl() vor LoadControl() aufgerufen werden?

Welcher Weg wird bevorzugt?

LoadControl(ResolveUrl("~/MyControl.ascx")); 
LoadControl("~/MyControl.ascx"); 
LoadControl("MyControl.ascx"); 

oder vielleicht ResolveClientUrl()?

Antwort

3

Es ist nicht erforderlich. Ich würde nicht einmal empfehlen, die erste Methode zu machen, da sie einfach redundant ist und die Komplexität erhöht. Die Tilde bedeutet, dass sie bereits relativ zum Anwendungsstamm ist - ResolveUrl wird nur so geändert, dass sie relativ zu der Seite oder der Benutzersteuerung ist, von der Sie sie aufrufen. Wie auch immer, es wird immer noch geladen.

Der zweite Weg wäre als Best Practice vorzuziehen, um sich vor relativen strukturellen Veränderungen in Ihrem Projekt zu schützen.

Noch besser wäre es, die Pfadzeichenfolge zu einer Ressource oder zumindest einer Konstante zu machen, um magische Strings loszuwerden und Überraschungen zu vermeiden.

+0

Zusammengefasst: 2. Weg – mbillard