2010-06-09 10 views
8

Uygulamamızı ASP.Net 2.0'dan ASP.Net 4.0'a güncelledik.ASP.Net 2.0 oluşturmayı almak için ASP.Net 4'te ClientIDMode'un doğru ayarı nedir?

Biz <system.web> elemanda web.config'de dahil ettik:

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" /> 

Benim anlayış bu/3.5 .Net 2.0 olarak denetimler aynı işlemek için olur gerekiyordu olmasıdır.

Ancak ... burada ... değil bu 2.0 işlenir bir örnek

geçerli:

<input id="grdUserEntity__ctl1_chkSelectAll" type="checkbox" 
    name="grdUserEntity:_ctl1:chkSelectAll" onclick="javascript:iSelectAll();" /> 

Bu 4.0 içinde:

<input id="grdUserEntity_ctl01_chkSelectAll" type="checkbox" 
    name="grdUserEntity$ctl01$chkSelectAll" onclick="javascript:iSelectAll();" /> 

farkı:

2.0 id=grdUserEntity__ctl1_chkSelectAll 
4.0 id=grdUserEntity_ctl01_chkSelectAll 

Bu yapılandırma ayarını okuduğumda, ASP.Net 4.0'ın sunucu denetimlerini ve istemci kimliğinin önceki sürümle aynı olmasını sağlamasına neden olur.

Neyi yanlış yapıyoruz?

cevap

12

Kimliklerin ASP.NET 2.0'den ASP.NET 3.5'e nasıl işlendiği konusunda bir değişiklik yapıldı. 2.0'dan 4.0'a çıktığınız için hala bu farkı görüyorsunuz. Değişiklik, XHTML uyumluluğu iyileştirmelerinden kaynaklandı.

xhtmlCompliance uyumlu ayarı ile 2,0 oluşumuna geri dönmeyi deneyebilirsiniz. Yine de başka bir vatandaşlık ayarı, evet :) Çalışmalı, ama dürüst olmak gerekirse, eski yurttaşlık ayarının 4.0'da ne kadar iyi test edildiğini bilmiyorum ve kullanmayı planlıyorsanız UpdatePanel ile uyumlu olmayacağını biliyorum. söyledi.

2.0 oluşturmayı sürdürmek için bir neden var mı? Sadece regresyon korkusu, ya da bilinen herhangi bir gerçek regresyon var mı?

XHTML ayarı: Bu yazının gelecek okuyucular için http://msdn.microsoft.com/en-us/library/ms178159.aspx

+2

2.0 işlenişine dayanan javascript'i var. Evet, evet şimdi birkaç regresyon sorunumuz var. – PilotBob

+0

Evet ... bu, gerilemeyi çözer. Teşekkürler mucho. – PilotBob

+0

Harika! Duymak güzel. – InfinitiesLoop

1

, kendi ASP.NET sayfasında <%=objectid.ClientId %> yapısını kullanarak uyumluluk sorunlarını azaltabilir.

Örnek: Bazı istemci tarafında javascript koduna başvurmanız gereken txtInput (bu ASP.NET öğesi id = ctl00_cphMainContent_txtInput olarak adlandırılır) adlı metin kutusunu varsayın. Eğer ASP.NET sayfasında aşağıdaki javascript kodu ile o nesne başvurusu olabilir:

str txtInputObjNm = "<%=txtInput.ClientId %>"; 

Çalışma zamanında, otomatik olarak aşağıdaki istemci tarafı çevrilecektir javascript:

str txtInputObjNm = "ctl00_cphMainContent_txtInput"; 

.NET Eğer clientid'in atanma şeklini değiştirmeye "karar verir", kodunuz çalışmaya devam eder.

+5

Bu tabii ki javascript'inizi web formuna sığdırdığınızı varsayar. Göze batmayan javascript kullanmayı tercih ediyoruz ve bunu yapmıyoruz. – PilotBob

1

Bir 4.0 uygulamasında pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID", Site.master sayfasında şekillendirme sorununu tamamen çözecektir. Örneğin, menüler tasarımcıda neredeyse görünmez olacak ve tarayıcıda stillerini tamamen kaybedecek. Temel olarak, stil tasarımcısında kaybolur.

Bunu hedef çerçeveyi 4.0'dan 3,5'e ve 4.0'a döndürerek buldum. Bundan sonra stil kıvrımlıydı. Tüm dosyaları iyi bir uygulamaya göre karşılaştırdıktan sonra, bu satırı web.config numaralı telefondan buldum. Onu kaldırdım ve stil problemlerim ortadan kayboldu.