2013-04-19 12 views
7

geçersiz kılınması/geçersiz kılınması Ana sayfaların kullanımına dönüştürmek istediğimiz mevcut bir ASP.Net web uygulamasına sahibiz. Bunu yapma sürecinde, HTML öğeleri için oluşturulan HTML kimliğinin ContentPlaceHolder kimliğiyle ön eklendiğini fark ettim. Ve bu, ContentPlaceHolder'ın clientidmode = statik değerini ayarladığımız zaman beklenebilecek olan şeydir. Şimdi, id'nin kullanımını kullanan birçok istemci tarafı betiği olduğundan, bu bölüm ana sayfaları kullandığımızda kırılıyor ve Control kullanarak javascript'i çağırdığımızdan emin olmak için tüm javascript'imizi çalıştırmamız büyük bir iş. ClientID, bir çoğu olarak kodlanmış.Adlandırma içeriğinin kimliği oluşturma İçerik sayfasının denetim kimliğinin

Öneklemeyi devre dışı bırakmanın bir yolu var mı? Bunu yapmakta başarılı olabilirim, eğer her bir kontrol ayarını ClientIdMode = statik olarak oluşturursam, ancak tüm kontrollerin ClientIdMode = statik olduğundan emin olmak için bunu bir kez daha tercih ederim. Mümkün mü? Veya ContentPlaceHolder'ın NamingContainer'ını geçersiz kılmak mümkün mü?

platformu, ben "ad" özelliği olduğunu biliyorsunuz soruna çarptı gelmiş (aşağıda cevapta açıklandığı gibi web.config statik ClientIDMode yukarıdaki sorunu = düzelttikten sonra)

.Net 4.0 ise otomatik olarak oluşturuldu ve master sayfalarını kullanıma sunmadan önce neye ayarlanmadı. Bu bana birçok Request.Form [] içeren mevcut sunucu kodumla ilgili bir sorun verir. Bu problemi çözmek için en iyi pratik nedir?

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ClientIDMode="Static" %> 

AnaSayfa Seviye:

Teşekkür Cihad

cevap

7

Sen Sayfa Düzeyinde ClientIDMode olabilir

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" ClientIDMode="Static" %> 

ve Web.config seviyesi (yapım tüm sayfalar bu davranışı miras):

<system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
    <pages clientIDMode="Static"></pages> 
</system.web> 
+1

Çok teşekkürler ClientIDMode kullanmalıdır rağmen bu kod, herhangi .Net framework sürümleri çalışması gerekir cevabın için. Bunu nasıl kaçırdığımı merak ediyorum. MSDN üzerinden okuma ClientIdMode = "static" açıklamasının altında şu noktaya düştüm: " " Denetim bir adlandırma kabıysa, denetim, içerdiği tüm denetimler için adlandırma kapsayıcılarının hiyerarşisinin üst kısmı olarak kullanılır. " Bunun ne anlama geldiğini açıklar mısınız? "Hiyerarşinin tepesi olarak" kullanılması ne demektir? Teşekkürler –

0

Hedeflemezseniz .Net framework 4 ve clientIDMode enum kullanılamıyorsa, denetim sınıfını geçersiz kılabilirsiniz. İşte HtmlGenericControl ile bir örnektir ama başka kumanda ile yapılabilir:

public class NoNamingContainerControl : HtmlGenericControl 
{ 
    public NoNamingContainerControl(string tag) : base(tag) { } 
    public override string ClientID 
    { 
     get 
     { 
      return this.ID; 
     } 
    } 
} 

.net 4'te muhtemelen

İlgili konular