2011-03-07 62 views
0

我起毛周圍驗證了目前一些自定義CompositeControls,並且爲了獲得服務器端驗證工作,我需要做到以下幾點:OnLoad中的EnsureChildControls()有點代碼味道嗎?

protected override void OnLoad(EventArgs e) 
{ 
    EnsureChildControls(); 
    base.OnLoad(e); 
} 

我還沒有完全掌握了ASP .NET頁面生命週期尚未解決,我想知道這是否是一般的ASP異味,還是可以嗎?

(我需要調用EnsureChildControls()的原因是因爲我的驗證在CreateChildControls()動態添加,但似乎CreateChildControls()前進行驗證服務器端自然調用,所以因此之前其實我已經創建的任何驗證。我打電話EnsureChildControls()迫使他們存在。)

+1

Asp.net是一個代碼味道:)使用MVC – luckyluke 2011-03-07 14:59:46

+0

哈,我希望:-)這一切都必須適應SharePoint 2007,它不會很好地與ASP MVC。 – ngm 2011-03-07 15:27:09

回答

0

說你的程序,增加了驗證是CrateValidators()

我建議你移動這Page_Init和LoadViewState基本上

bool _doCreateValidators=false; 
void OnPageInit(sender,args){ 
    if(_doCreateValidators){ 
     CreateValidators(); 
    } 
} 

protected override void LoadViewState(StateBag savedState){ 
     CreateValidators(); 
     _doCreateValidators = false; 
     base.LoadViewState(savedState); 
} 
相關問題