2011-03-19 13 views
7

क्यों DisplayUsers(); काम नहीं करता है?पेज_लोड बनाम ऑनलोड

मेरे आधार पृष्ठ है:

public class adminPage : System.Web.UI.Page 
{ 
    protected override void OnLoad(EventArgs e) 
    { 
     if (User.Identity.IsAuthenticated == false) { Response.Redirect("~/Account/login.aspx?ReturnUrl=/admin"); }; 
     if (!(User.IsInRole("admin") || User.IsInRole("super user"))) { Response.Redirect("/"); }; 
    }   
    } 

मेरी कक्षा

public partial class users : adminPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    {       
     string sName; 
     adminGeneralData.GetToolData(2, out sName); 
     pageH1.Text = sName; 

     DisplayUsers(); 
    } 

    protected void DisplayUsers() 
    { 
     DataSet ds = userData.GetUsersData(); 
     userList.DataSource = ds; 
     userList.DataBind(); 
    } 
} 

लेकिन DisplayUsers() काम नहीं करता,

+1

मैं वास्तव में UI.Page के उपयोग को वास्तविक व्यापार तर्क करने के बजाय बेसक्लास के रूप में समझ नहीं पा रहा हूं। यह एक वेब प्रस्तुति ऐप है। सभी बेस तर्क प्रस्तुति से अलग किया जाना चाहिए। – Independent

+0

@ डिंगिर - मुझे एक उदाहरण दें! – eyalb

+3

नेमस्पेसिंग के लिए 'पास्कलकेस' का प्रयोग करें, नाम और कैटर टाइप करें। आप मुझे बाद में धन्यवाद कर सकते हैं। –

उत्तर

16

है अगर मैं सही ढंग से याद है, आप आधार कॉल करने के लिए की आवश्यकता होगी कक्षा OnLoad घटना Page_Load घटना को ठीक से पंजीकृत करने के लिए:

protected override void OnLoad(EventArgs e) 
{ 
    if (User.Identity.IsAuthenticated == false) { Response.Redirect("~/Account/login.aspx?ReturnUrl=/admin"); }; 
    if (!(User.IsInRole("admin") || User.IsInRole("super user"))) { Response.Redirect("/"); }; 

    base.OnLoad(e); 
} 

यहाँ अच्छा के एक जोड़े पढ़ता हैं:

1

निष्पादित कोड में, वहाँ कोई अंतर नहीं है, लेकिन

  • AutoEventWireup सक्षम होना चाहिए (आमतौर पर मार्कअप में) प्रत्येक पृष्ठ के लिए
  • Page_Load (और other events इस तरह) स्वत: घटनाओं सदस्यता mechanism, जो प्रतिबिंब का उपयोग करता है, क्या थोड़ा हिट प्रदर्शन

मैं व्यक्तिगत रूप से OnLoad() ओवरराइड करने के लिए सलाह देते हैं, बस भूल नहीं है base कॉल करने के लिए उपयोग करता है।

3

नेट आवेदन में Performance Tips and Tricks के अनुसार:

Autoeventwireup फ़ीचर

के बजाय autoeventwireup पर भरोसा करने से बचें, पेज से घटनाओं को ओवरराइड। उदाहरण के लिए, पेज_लोड() विधि लिखने के बजाय , सार्वजनिक शून्य ऑनलोड() विधि ओवरलोड करने का प्रयास करें। यह रन पेज को प्रत्येक पृष्ठ के लिए CreateDelegate() करने से रोकता है।

संबंधित मुद्दे