2012-04-26 17 views
6

Yazdığım, bir ASP.NET sayfasına eklediğim ve düzgün çalıştığım bir kullanıcı denetimim var. Ancak, bu özel denetimdeki bir özelliğe Page_Load üzerindeki koddan başvurmaya çalışıyorum, ancak yapamayacağınız değişken, çünkü örnek geçersizdir.ASP.NET User Control örneği sayfadaki Sayfa_Load sayfasında başvuruda bulunulan zaman sıfırdır

Bu kullanıcı denetimleri ve Page_Load için normal midir? Ve eğer öyleyse, kamu mallarına erişmek için kontrolün örneğine nasıl bir referans yapabilirim? Bu, bazı değişkenleri başlatmak için sayfa oluşturulmadan önce yapmam gereken bir şey.

+0

Kullanıcı Denetiminize Page_Load yönteminde başvuru yapabilmeniz gerekir. Lütfen işaretlemenizi ve kodunuzu arkanızda gösterin. İşaretleme örneğinde, lütfen <% @ Register%> etiketlerini ekleyin. – Mark

cevap

0

Kullanıcı denetiminize muhtemelen Page_PreRender etkinliğinden erişebilirsiniz.

page life cycle in asp.net here hakkında daha fazla bilgi bulabilirsiniz.

+0

Teşekkürler, bu hile gibi görünüyordu! –

15

Aynı sorunu yaşadım ve özel denetimimi hatalı olarak kaydettirdiğim ortaya çıktı.

doğru Tanım:

<%@ Register Src="PeriodControl.ascx" TagName="PeriodControl" TagPrefix="ucs" %> 

yanlış Tanım:

<%@ Register TagPrefix="ucs" Namespace="MyWebsite" Assembly="MyWebsite" %> 

tek fark .Ascx dosyası yerine doğrudan montaj kontrol referans amaçlanmıştır. Git hadi!

+2

Kullanıcı denetimi aslında bir derlemede (ascx DLL'de ve sitede bulunmuyorsa) ne yaparsınız? Yaygın olarak kullanılan tüm kullanıcı denetimlerini bir DLL'ye derlemek için bir web dağıtım projesi kullandım. VS2012 bu proje türünü desteklemiyor, ancak bir siteyi bir derleme olarak düzenleyebiliyorsunuz ve VS okuyacaktır. Fakat nasıl kaydedileceğini anlayamıyorum, bu yüzden kullanıcı denetimleri üzerindeki denetimler boş değil. –

+0

Emin değilim. Bir dll'den referans alınmışsa, belki araç kutunuzda görünür ve sayfanıza sürükleyebilirsiniz. Sonra VS sizin için kayıt etiketini oluşturacaktır :) Bu benim düşünebileceğim tek şey. Umarım yardımcı olur ... –

+0

2 saat boyunca mücadele ediyordum ve sonunda çözümünüzü buldum, bir cazibe gibi çalıştı. – gangt