2012-07-12 21 views
19

Gerçek bir ASP.NET denetimi yerine standart bir HTML öğesinde runat = "server" kullanmak hiç uygun mu? Normal elemanın html/metnini ayarlama konusunda tam kontrole sahibim, o zaman neden bir "clunky" ASP.NET WebForms kontrolü yerine kullanmıyorum? Normal HTML'de runat = "server" kullanıldığında

biri diğerinden daha iyi ise

, ilgi bazı noktalar Bilmek istiyorum:

  • Performans farklılıkları
  • İşlevsellik farkları
  • Diğer farklar o kadar bariz?

örneği farkı: Ben kendi html yazma esnekliğini gerekli ama yine de arkasındaki kodu özelliklerine var erişmek için gereken zaman

<asp:Literal ID="mySpecialHtml" runat="server" /> 

<div id="mySpecialHtml" runat="server" /> 

cevap

16

Her ikisi de ASP.NET sunucu denetimleridir. HTML öğelerine karşılık gelenler System.Web.UI.HtmlControls ad alanındadır ve web denetimleri System.Web.UI.WebControls ad alanındadır.

HTML denetimleri daha hafiftir ve tam olarak bir HTML öğesine karşılık gelir; web denetimleri daha fazla özelliğe sahiptir ve tarayıcı özelliklerine ve denetimin ayarlarına bağlı olarak farklı HTML öğeleri olarak oluşturulabilir.

Bir HTML denetimi, bir web denetimi sıfır veya daha fazla HTML öğesi olarak oluşturulduğunda, tek bir HTML öğesi oluşturur. Örneğin, Literal denetimi, bir öğe olarak işlenmez, yalnızca metnini çıkarır. Repeater ve PlaceHolder denetimleri gibi, kendi başına herhangi bir öğe oluşturmayan başka denetimler de vardır.Diğer yandan, örneğin, CheckBoxList denetimi, birkaç HTML öğesi, kapsayıcı olarak table ve içindeki her onay kutusu için input öğesi olarak işlenir.

farklı elemanlar kullanılarak oluşturulan bir kontrol örneği bir input veya TextMode özelliğine bağlı olarak bir textarea eleman olarak ya da işlenecek TextBox kontrolüdür.

Web denetimleri daha fazla özelliğe sahiptir, ancak daha fazla kaynak kullanır. Daha fazla mülkleri var ve temalar ve veri bağlama gibi şeyleri destekliyorlar. Web kontrollerinin birçoğu, sayfanın bir parçası olarak gönderilen ViewState'a veri koydu. Dikkatli değilseniz, ViewState oldukça büyük olabilir ve sayfanın yüklenme süresini etkiler.

10

Sunucu html kontrollerini kullanmış tek sebebi. geride

mySpecialHtml.InnerHtml = "something else"; 
ben istemci tarafında daha fazla çalışma olduğunda html denetimlerini kullanın ve sunucu tarafında daha fazla çalışma olduğunda asp.net kontrolleri kullanmayı tercih
1

(kod: ardındaki kodunda

<div id="mySpecialHtml" runat="server" /> 

).

4

ASP.NET ayrıştırıcısı, html sunucu denetimleri olarak standart html öğelerini w/runat = "server" etiketini yorumlar. Örnek:

<a runat="server"></a> 

Yani, farkında

<asp:HtmlAnchor runat="server"></asp:HtmlAnchor> 

olarak yorumlanır olduğunu karşılık gelen HTML Sunucu kontrolünü kullanırken daha sen = runat "sunucu" kullanırsanız. Ayrıca, ASP.NET daha fazla işlevsellik, daha fazla özellik, olay vb. Sağlayan, ancak bazı durumlarda daha yavaş olabilen bir dizi Web Sunucusu denetimleri, yani HyperLink denetimi içerir.

+0

+1 Bazı insanlar, bir HTML denetimine runat = "server" ekleme, aslında bu denetimi bir sunucu denetimine dönüştürdüğünde hiçbir şey değiştirmez. –

1

ASP.NET'in genellikle çok daha fazla işleve sahip olan farklı bir Web Sunucusu denetimleri kümesi kullandığını düşünüyorum, ancak gerçekten tercihinize göre. Eğer işiniz çoğunlukla sunucu tarafında ise, ASP.NET kontrollerine bağlı kalırım.

İlgili konular