by oozturk
30. December 2008 22:58
Asp.NET ile hazırlanan sayfalarda mesela masterpage kullanılıyorsa nesnelere verilen isimlere runtime'da bazı ekler .net tarafından otomatik olarak eklenir. ClientID'ye de design time'da ulaşmak mümkün olmadığı için javascript ile ulaşılmak istenildiğinde o nesneye verilen isim aynen kullanılamaz (ClientID özelliğine, bahsettiğim durumda, sanırım .NET 4.0'da ulaşabiliyor ve hatta sanırım belirleyebiliyor olacağız.). Bu sebeple javascript'i hazırlarken dikkat edilmesi gereken bir husus var. Aşağıda verdiğim örneğe bakarsanız hemen göreceksiniz zaten.
<script type="text/javascript">
function showPanel() {
var pnlvis = document.getElementById(<% ="\'" + pnlModalVisHid.ClientID + "\'" %>);
pnlvis.show();
}
</script>
Bu örneği bir başka yazıda kullanmıştım zaten, oradan alıntı yaptım. Görüldüğü üzere getElementById fonksiyonunu çağırırken direk olarak nesnenin adını değil de runtime esnasında .net tarafından verilmiş (değiştirilmiş) adını vermiş olduk.
Peki html nesnelerine nasıl ulaşacağız? Esasen hiçbir şey değişmiyor. Yalnızca html nesnesine runat="server" diye eklemek gerekiyor ki clientId'si .net tarafından yaratılsın. Bunu yapmamızdaki sebep, yukarıda da belirttiğim gibi masterpage kullanınca .net'in nesne isimlerini değiştiriyor olması.
İşte bu kadar. Umarım yardımcı olabilmişimdir.
İyi çalışmalar dilerim.