2012-07-16 19 views
38

ASP.NET'te gerçekten yeniyim. Sadece bir varsayılan ASP.NET web uygulamasına bakıyordum. Varsayılan olarak birkaç sayfa ile gelir (Default.aspx, About.aspx vb.).Runat sunucu özniteliğini anlama

Site.master dosyasının, sayfalarımın ana düzenini oluşturduğum dosya olduğunu fark ettim. Ancak, head etiketinin runat="server" özniteliğine sahip olduğunu da fark ettim.

Bu etiket <asp:XXX> etiketleri kullanılır biliyorum, ama neden bir <head> etiketinde ???

Ayrıca, bu özniteliği kaldırdığımda, tüm stiller web sayfasından kaldırılır. Görünüşe göre bir şeyler yapıyor. Tam olarak ne yaptığını anlamıyorum ...

Peki neden orada, bir HTML etiketinde ... ??? Ben runat nitelik temelde elemanı, onun özelliklerini ayrıştırmak gerektiğini ASP.Net söyler sunucuda çalıştırılması gerekir orada herhangi bir kod ...

<head runat="server"> 
    <title>Hallo</title> 
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> 

    <!-- This part is run on the server. So why does the head tag 
     also need a runat=server ?? --> 
    <asp:ContentPlaceHolder ID="HeadContent" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
+9

Özellikle yeni başlıyorsanız, MVC'yi kullanmaya başlayın. – vcsjones

+2

http://stackoverflow.com/q/1375725/422353, http://stackoverflow.com/q/304290/422353 – madth3

+1

@vcsjones gibi keşke yapabilmem için birkaç soru var, ama okumak zorundayım Sertifika için MS 70-515 kitap. Bu yüzden şu an sadece ASP.NET ile sıkışmış durumdayım :-( – Vivendi

cevap

20

kafa elemanı o (ziyade statik HTML yerine) bir sunucu denetimi olduğunu gösterir bir runat="server" öznitelik içerir. Tüm ASP.NET sayfaları System.Web.UI ad alanında bulunan Sayfa sınıfından türetilir. Bu sınıf, sayfanın bölgesine erişim sağlayan bir Başlık özelliğini içerir. Başlık özelliğini kullanarak bir ASP.NET sayfasının başlığını ayarlayabilir veya oluşturulmuş bölüme ek işaret ekleyebiliriz. Daha sonra, bir sayfanın Page_Load olay işleyicisine bir kod yazarak bir içerik sayfasının elemanını özelleştirmek mümkündür.

' Programmatically add a <meta> element to the Header 

Dim keywords As New HtmlMeta() 
keywords.Name = "keywords" 
keywords.Content = "master page,asp.net,tutorial" 
Page.Header.Controls.Add(keywords) 

Daha fazla bilgi için bkz Specifying Meta Tags in ASP.NET with VB.NET.

+0

Çok kafa karıştırıcı açıklama .... –

8

görmüyorum ve o kadar içeriği var bir sunucu kontrolü. Yanıtı yapılandırmak için sunucuda kodun çalıştırılması. Onsuz

, <head> bölüm içinde yer alan herhangi bir alt denetimlerin ayrıştırılır almazsınız. Yani, herhangi bir dinamik head er içerir, başlık manipülasyonları veya herhangi bir sunucu kontrolleri yorumlanmayacaktır.

5

runat = ASP.NET'te "sunucu" etiketi/dönüştürmek Eğer nesil anda kodu aracılığıyla manipüle edebilir bir sunucu tarafı kontrol olarak en herhangi bir HTML elemanı tedavi olanağı sağlar. Bazı kontrollerin açık uygulamaları vardır, diğerleri sadece genel bir kontrol uygulamasına geri döner.

+0

Çok iyi bir açıklama, diğerleri çok kafa karıştırıcı –

27

Sen <head> öğeden runat="server" çıkarılırken stilleri artık uygulanmaz neden istedi.

Bu basit: sunucu tarafında çalıştırılarak, ayrıştırıcı, uygulamanın kök yolunu kullanarak <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> stil sayfası bildiriminden ~/'u değiştirecektir.

~ bir URL yasaktır. Böylece, bu ayrıştırıcı tarafından değiştirilmezse, dosya bulunamaz, böylece stil sayfası uygulanmayacaktır.

Oh btw <head> elemana runat="server" niteliğinin kurulması <link> eleman sunucuda çalıştırılır dolayısıyla neden tüm alt unsurları sunucuda çalıştırılacak zorlar.

İlgili konular