Frage

Ich habe zwei Masterpages. Ein main.Master und ein search.Master.

Die search.Master ist eine verschachtelte Masterpage, die „innerhalb“ der main.Master ist. Um meine CSS-Dateien arbeiten mit Masterpages zu bekommen, hatte ich das runat = „server“ atribute zu platzieren. Wie folgt aus:

<link runat="server" href="~/mp/css/master.main.css" rel="stylesheet" type="text/css" />

Und arbeitet wunderbar in der Masterpage. Doch diese verschachtelte Masterpage hat ihre eigene Art, also versuchte ich wieder die runat = „server“ Trick zu tun. Ich stellte sicher, dass mein asp: Inhalt innerhalb der war und tippte:

<link runat="server" href="~/mp/css/master.search.css" rel="stylesheet" type="text/css" />

Allerdings, wenn ich den Quellcode meiner Website überprüft, gezeigt der Pfad war:

~ / mp / css / master.search.css

Insetead der

../../ mp / css / master.search.css

Wer weiß, warum dies geschieht? Und wie diese zu lösen?

PS: Ich will nicht das <% = ResolveClientUrl ( "bla bla bla")%>, verwenden, da es nahe der mastrepage / Thema Beziehung durcheinander. Und ich würde nicht lieber das CSS-Stylesheets im Header vom Serverside-Code einzufügen.

War es hilfreich?

Lösung

Der Grund, warum es passiert ist, weil der ASPX-Prozessor an einem GenericControl umwandelt, wenn sie im Kopfbereich ist, dann ist es wandelt es in einer Htmllink-Steuerung.

Für die generischen Kontrollen setzt er den href als Attribut. Der Htmllink hat eine Href Eigenschaft, die verwendet wird, und wird die URL lösen.

Die einzigen Lösungen, die ich von aus der Spitze von meinem Kopf denken kann, sind:

  1. <%=ResolveUrl("blah")%> oder <%=ResolveClientUrl("blah")%>

  2. Erstellen Sie eine benutzerdefinierte Steuerelement, das die Verbindung macht und löst die URL einer der oben genannten Methoden.

Andere Tipps

Ich sehe das Problem Sie haben. Die einzige Abhilfe, die ich tun konnte, war ein System.Web.UI.HtmlControls.HtmlLink Objekt in der Code-behind zu erstellen, setzen Sie die Href-Eigenschaft und die rel-Attribut (und alle anderen Attribute, die Sie wollen), und fügen Sie die Kontrollen für der Kopf Content.

Wenn Sie alle Ihre CSS-Deklarationen innerhalb des Kopfes Tages sind (entweder direkt oder über eine Contentsteuerung) dann alles, was Sie sollen es Ihren CSS Link in Bezug auf die Position der Masterseite angeben zu tun haben. Die URLs sollten automatisch an die richtigen Stellen indexiert bekommen. Sie brauchen nicht das runat-Attribut, noch brauchen Sie ~ hinzuzufügen. In meinem Fall ist dies der Code, den ich in meinen Master-Seiten habe:

<link href="../../res/css/styleForThisParticularMasterPage.css" rel="stylesheet" type="text/css" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top