2016-06-07 8 views
1

lade ich ein web.config Schlüssel wie unten eingefügt haben:C# Variablen-Tags in aspx

<add key="WebInstance" value="/testApp"/> 

Als ich rufe meine Site.Master

<link rel="stylesheet" href="<%= WebInstance%>/themes/bs3/css/bootstrap.min.css" /> 

In meinem Site.Master.cs

private string _webInstance = ConfigurationManager.AppSettings["WebInstance"] 

public string WebInstance { get { return _webInstance ; }} 

Die erste Referenzierung in Site.Master funktioniert einwandfrei. Beispiel:

<link rel="stylesheet" href="/testApp/themes/bs3/css/bootstrap.min.css" /> 

Aber in den anderen Seiten verweist es auf das vollständige Tag.

Zum Beispiel, wenn ich inspect element auf der Browser-Funktion zu tun, was ich sehe auf meinem <head></head> Tags sind diese:

<link rel="stylesheet" href="<%= WebInstance %>/themes/bs3/css/bootstrap.min.css" /> 

Ich hatte auch die Funktionen des Erhaltens der Schlüssel auf meinem ascx.cs

Warum ruft es nur das Tag auf, anstatt den tatsächlichen Wert zu erhalten?

UPDATE

Site.Master und die 'anderen' Seiten sind zwei verschiedene Dinge, die WebInstance Schlüssel aus der web.config Datei.

In Site.Master.cs Ich habe eine eigene Funktion, um den Schlüssel aufzurufen und auch die anderen Seiten haben ihre eigenen entsprechenden Funktionen, um den Schlüssel aufzurufen.

Please take a look at the attached image for better understanding.

UPDATE WIEDER

ich die Antwort auf all diese gefunden haben, hatte ich runat="server" auf meine <Head></Head>-Tags auf den anderen Seiten, das Entfernen sie das Problem gelöst. Danke trotzdem;)

+0

'Site.Master' ist keine Seite, es ist eine Masterseite, Sie können sie nicht selbst öffnen. Kannst du erklären was genau meinst du mit "Die erste Referenz in Site.Master funktioniert perfekt."? – Andrei

+0

Was ich meine, ist diese Seite, die von Site geerbt hat.Der Master wird in der Lage sein, auf die Stilseiten basierend auf dem Schlüssel Bezug zu nehmen, aber für einige andere Seiten, wenn ich das selbe gemacht habe, zeigt er '<% = WebInstance%>' als physischen Pfad an und wandelt ihn nicht in den Schlüssel um Ich will. – NewbieCoder

+0

Was ist anders zwischen diesen anderen Seiten und den Seiten, die gut funktionieren? – Andrei

Antwort

1

Ihre anderen Seiten können Code-Behind nicht direkt in ihrer Masterseite referenzieren. Sie könnten Ihren einzelnen Seiten die gleiche Eigenschaft hinzufügen, aber dann erhalten Sie eine Duplizierung.
Obwohl ich kein großer Fan von statischen Klassen bin, in diesem Fall könnte es guter Kompromiss sein:

public static class SiteSettings 
{ 
    public string WebInstance 
    { 
     get { return ConfigurationManager.AppSettings["WebInstance"];}} 
    } 
} 

Dann in Ihrer ASPX, SiteSettings.WebInstance verweisen.

Einige Entwickler erstellen eine Basisseite, von der andere Seiten erben, und legen dort gemeinsame Eigenschaften fest. Das kann funktionieren, aber ich würde es als letzten Ausweg verwenden. Früher oder später wirst du einige Verhaltensweisen der Basis-Seite wollen, aber keine anderen, oder du musst einige grundlegende Änderungen an der Seite vornehmen und es wird ein großer Schmerz.