15 Kasım 2008 Cumartesi

ASP.NET kontrollerinde 'could not be set on property' hatası

Birçoğumuz, kendimize ait kontrolleri oluştururuz. Oluşturduğumuz kontrolleri projelerimize ekler kullanırız. Ancak bazen hiç karşılaşmadığımız, saatlerimizi belki gecelerimizi harcayacağımız problemler ile karşılaşırız ( ben gibi :) ). Ben de bir projemde kolaylık sağlaması adına bir kontrol geliştirmek istedim. Kontrol, bir kişinin yada nesnenin bilgilerini girerken resim bilgisini görsel olarak tutmak ve seçilecek resmi, modal bir pencereden bizim belirlediğimiz bir path altından listeleyen bizim de bu listelenen resimlerden seçim yapıp bizim resim kontrolümüzde gözükmesini sağlıyor. Böylece url den kurtulmuş, kullanıcı da ne seçtiğini görsel olarak görmüş olucak.

Ancak asıl bloğa konu olan, yazdığım bu kontrolü sayfaya eklediğimde problem yok, herhangi bir property'i set etmek istediğimde 'XXXX:XXX' could not be set on property 'xxx' designer'da hatası ile karşılaştım. Bu hata, kontrolün içinde bulunduğu updatepanel yada grid gibi kontrollerin de designer'da hata vermesine neden oluyordu. Sonunda sorunun çözümünü buldum, çözümü de "Developing Microsoft ASP.NET Server Control and Components" isimli kitabın yardımıyla buldum tesadüfen.

Soruna neden olan ToolboxData("<{0}:XXX runat="server"> ")] attribute :)
sanırım assembly dosyasına [assembly: TagPrefix(namespace, TagPrefix)] attribute'ü ile kullandığımdan bir sorun oluşturdu anlamadım :), ancak ToolboxData attribute'ünü çıkardığımda sorun çözüldü :). Ama halen sizde bu sorun devam ediyorsa, kontrolünüzün render methodlarını gözden geçirin, örn. Page.ClientScript.GetPostBackEventReference(this, "")); yerine Page.GetPostBackEventReference(this, ""));
gibi bi tanımlama yaptıysanız, compiler size bu kullanımın yerine yeni kullanım şeklini kullanmanızı söyler. Bu tarz bi durum varsa düzeltiniz. Çünkü render methodundaki herhangi bir durum da bu hatayı almanıza neden olur.
başka bir problem ve konu ile görüşmek üzere...

Hiç yorum yok: