2010-10-27 9 views
13

Was ist der Hauptunterschied zwischen .skin und .css in asp.net?.skin vs .css von asp.net

.skin ist eine neue Erweiterung der IDE. Ich habe mit .css gearbeitet. Was in .skin verfügbar ist, das ist nicht zu .css

Dank, saj

Antwort

20

In der Skin-Datei Sie Eigenschaften von asp.net Kontrollen einstellen.

Zum Beispiel

<asp:TextBox runat="server" Width="200"/> 

Alle Textboxsteuerelemente in Ihrer Anwendung haben Breite 200

Sie können einen Namen geben und nur die Steuerelemente Sie mögen, sie setzen können eine Haut aufzutragen zum Beispiel fügt

<asp:TextBox SkinID="MultiLineTextBox" runat="server" TextMode="MultiLine" Height="240"/> 

jetzt in einer Web-Seite, wenn TextBox-Steuerelement Sie seine SkinID einstellen „MultiLineTextBox“ wie die folgenden sein,

<asp:TextBox runat="server" SkinID="MultiLineTextBox"/> 

und so wird es die Textmode als Multiline und die Höhe als 240.

So verwenden Sie die Haut Sie ein Thema für Ihre Anwendung unter dem App_Themes Ordner hinzufügen müssen erben und dort Sie die Skin-Datei hinzufügen Um nun dieses Thema in Ihren Seiten zu verwenden, müssen Sie die EnableTheming-Eigenschaft der Seite auf True, StylesheetTheme oder Theme auf den Namen Ihres Themas setzen. Sie können diese Eigenschaften auch in der Konfigurationsdatei festlegen.

Einstellen des Themas auf der Seite aspx,

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" EnableTheming="true" StylesheetTheme="Your Theme Name" %> 

Einstellung des Themas in der web.config,

<configuration> 
    <system.web> 
    <pages styleSheetTheme="Your Theme Name"></pages> 
    </system.web> 
</configuration> 
+0

Schöne Erklärung: Aber ich habe einen Fehler, wenn ich versuche zu verwenden .. der Fehler ist..Eine SkinID wurde angegeben, aber die Seite ist nicht konfiguriert, ein Seitenthema oder Stylesheet-Thema zu verwenden. Dies ist akzeptabel, wenn das Design des Designs oder Stylesheets programmgesteuert festgelegt wird. Für .css müssen wir Link von aspx Seite geben .. Es gibt keine Art wie Haut, wenn ich versuche, Link zu geben .. wie kann ich zugreifen .skin Datei – selvaraj

+0

Ich aktualisierte den Beitrag zu erklären, wie das Thema und die Haut zu verwenden Datei –

+0

Korrigieren Sie mich, wenn ich falsch liege, aber Sie sollten 'SkinID =" MultiLineTextBox "Attribut nicht nur verwenden, wenn Sie auf die Haut in der asp: -Schaltfläche verweisen, sondern auch, wenn Sie die Haut definieren. (zweite Codezeile). Schöne Antwort trotzdem. – Tomas00

7

Beachten Sie, dass in Hinblick darauf, was diese beiden Dinge tatsächlich tun es ein beträchtlicher Unterschied. Alle in der .skin-Datei festgelegten Eigenschaften werden auf alle Seitensteuerelemente kopiert. Ein Vorteil der Verwendung von Cascading Style Sheets besteht darin, dass die Informationen einmal geladen und zwischengespeichert werden. (und kann auf mehrere Webseiten angewendet werden.) Skin-Dateien können zu einem Aufblähen der Seite führen, da alle in der Skin-Datei festgelegten Eigenschaften bei jedem Rendern der Seite mit jedem betroffenen Steuerelement zusammengeführt werden müssen.

Darüber hinaus ist das Standardverhalten der ASP.NET-Design-.skin-Dateien zu überschreiben die Eigenschaften der Steuerelemente betroffen sein (dies kann ein unerwartetes Verhalten sein). Wenn Sie beispielsweise die Eigenschaft Width für alle ASP: Labels in Ihrer .skin-Datei festlegen, werden alle ASP: Labels, die die Skin-Datei verwenden, auf Width eingestellt, unabhängig von der individuellen Width Einstellung des Steuerelements der Datei .skin. Um dieses Verhalten zu vermeiden, kann ASP.NET StyleSheetTheme verwendet werden, damit Eigenschaften auf Steuerelementebene die globalen Eigenschaften von .skin überschreiben können.

+0

Ich verstehe nicht: sagen Sie, dass alle kompilierten ASPXs einen Initialisierungsabschnitt mit allen Hauteigenschaften bekommen? Das ist alles auf der Serverseite getan, nicht wahr, und einmal? Also warum ist es wichtig? – Rup

+0

Es ist Server-Seite getan. Dies geschieht jedoch jedes Mal, wenn die Seite angefordert wird. was etwas Overhead hinzufügt. – NotMe

+0

Danke @Chris ja, die Eigenschaften werden serverseitig zu jedem Steuerelement hinzugefügt, was die Seitengröße erhöht. –

1

Sie können einige Eigenschaften wie Breite auch in CSS festlegen. Abgesehen davon, dass Sie Eigenschaften festlegen können, die CSS nicht kann, gibt es einige Dinge, für die Sie .skin-Dateien benötigen.

Betrachten Sie ein Beispiel, in dem Sie alle asp: Label-Steuerelemente auf Ihrer Seite in blauer Farbe benötigen. Ein Asp: Label ist eigentlich Text innerhalb einer Spanne, also in einem versteckten div. Dies ist der Grund, warum wir einige Eigenschaften wie BackColor auf diese Asp setzen können: Label und warum das Standard-Label-Steuerelement keine "BackColor" -Eigenschaft hat.

Also, wenn Sie versuchen, Schriftfarbe für alle ASP Labels durch CSS zu setzen,

dann so etwas wie

Label { 
color: Blue; 
} 

wird nicht funktionieren. Auf der anderen Seite, mit einer Skin-Datei können Sie schreiben

und dies wird alle Labels auf blaue Farbe setzen.

+1

Wenn Sie die Eigenschaft 'AssociatedControlID' auf 'asp: Label' setzen, funktioniert Ihr Label-CSS, weil das 'asp: Label' als 'Label' anstatt als 'span' dargestellt wird. Sie können auch eine Skin "Label" definieren, die eine "Label" -Klasse auf den gerenderten Bereich anwendet. http://jsfiddle.net/JamVw/ – Homer