2011-02-22 10 views
5

मैंने क्लास लाइब्रेरी के अंदर सी # में एक कक्षा बनाई है और मैंने इस नियंत्रण को default.aspx में जोड़ा है, लेकिन मेरा कोड पेज_लोड ईवेंट को नहीं चलाता है। यहां कोड है:Page_Load UserControl में गोलीबारी नहीं कर रहा है

मैं गलत क्या कर रहा हूं?

पृष्ठ लोड होता है लेकिन पृष्ठ पर लेबल नहीं दिखाता है। मैंने बिना किसी त्रुटि के पेज पर नियंत्रण जोड़ा है। मैंने ईवेंट में पंजीकरण टैग जोड़ा है।

HTML टैग: <RandoIntegerControls:RandomIntegerControl ID="RandomIntegerControl1" runat="server"></RandoIntegerControls:RandomIntegerControl>

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Web.UI.WebControls; 

namespace CSIMedia.WebControls 
{ 

    public class RandomIntegerControl : PlaceHolder 
    { 

    private Label _Label; 


    public RandomIntegerControl() 
    { 

    } 

    private void Page_Load(Object sender, EventArgs e) 
    { 

     this._Label = new Label(); 
     this.Controls.Add(this._Label); 
     this._Label.Text = "Enter random values:"; 

    } 

    } 
} 

Default.aspx पेज:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<%@ Register TagPrefix="RandoIntegerControls" Assembly="CSIMedia.WebControls" Namespace="CSIMedia.WebControls"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <RandoIntegerControls:RandomIntegerControl ID="RandomIntegerControl1" runat="server"></RandoIntegerControls:RandomIntegerControl> 
    </div> 
    </form> 
</body> 
</html> 
+0

क्या आपने एएसपीएक्स फ़ाइल में अपने कस्टम नियंत्रण की .ascx फ़ाइल शामिल की है जो इसका उपयोग करता है? – skaz

+0

नहीं मैंने इसे हटा दिया। मैंने कोई एसीएक्स फाइल नहीं बनाई है। मैंने इस वर्ग को class.cs फ़ाइल के रूप में बनाया है और इस पृष्ठ को केवल पृष्ठ पर जोड़ा है। लेकिन मैंने default.aspx पेज को वापस जोड़ा है और मुझे अभी भी इसके साथ कोई भाग्य नहीं है। – redoc01

+0

क्या आप वह कोड दिखा सकते हैं जहां आपने पृष्ठ पर नियंत्रण जोड़ा था? – skaz

उत्तर

2

आप प्लेसहोल्डर है, जो एक वेब नियंत्रण है और Page_Load घटना को संभाल नहीं होगा से इनहेरिट कर रहे हैं। केवल उपयोगकर्ता नियंत्रण (.ascx) उस घटना को पूरी तरह से संभालने में सक्षम होंगे।

आपके द्वारा पोस्ट किए गए कोड के दिखने से आप शायद उपयोगकर्ता नियंत्रण का उपयोग कर बेहतर हो जाएंगे, या यदि आपको इसे कई परियोजनाओं में पुन: उपयोग करने की आवश्यकता है, तो स्क्रैच से वेब नियंत्रण बनाएं।

+0

@clint यह नहीं है कि मैंने क्या किया है, स्क्रैच से वेबcontrol बनाया है? क्या आपका मतलब है कि मुझे पेज_लोड के लिए वेब नियंत्रण से विरासत की आवश्यकता है? – redoc01

+0

नहीं, स्क्रैच से वेब नियंत्रण बनाने के लिए आपको वेब नियंत्रण से ही उत्तराधिकारी होना चाहिए और नियंत्रण बनाने के लिए संबंधित विधियों को ओवरराइड करना होगा। प्लेसहोल्डर से विरासत का अर्थ है कि कार्यक्षमता पहले से ही हो चुकी है। – Clint

+0

आपको वास्तव में क्या करने के लिए कहा गया है? – Clint

8

इस प्रयास करें:

public RandomIntegerControl() 
{ 
    this.Load += Page_Load; 
} 

पृष्ठों (और उपयोगकर्ता नियंत्रण) में, Page_Load विधि सामान्य रूप से स्वचालित रूप से इस विशेषता के लिए धन्यवाद जुड़ा हुआ है:

<%@ Page ... AutoEventWireup="true" ... %>

आप एक नहीं है, तो एएसपीएक्स/एसीएक्स फ़ाइल, यह स्वचालित रूप से होने वाला नहीं है, लेकिन आप उपरोक्त कोड के साथ इसे मैन्युअल रूप से हुक कर सकते हैं।

+0

जब मैं इस कोड को vb.net में रूपांतरित करता हूं, तो सब कुछ ठीक काम करता है। मैं एक वीबी.Net डेवलपर हूं लेकिन मुझे एक भूमिका में एक परीक्षण परियोजना के लिए सी # का उपयोग करने के लिए कहा गया है, जिसके लिए मैंने आवेदन किया है, इस जल्दी से आने का सबसे अच्छा तरीका क्या है ताकि मैं परीक्षण जल्दी से कर सकूं? – redoc01

+0

क्षमा करें, मुझे यकीन नहीं है कि मैं सवाल समझता हूं। मैंने जो कोड लिखा है वह सी # है, क्या आप वीबी संस्करण मांग रहे हैं? –

+0

बहुत बढ़िया, मेरे लिए काम किया पूरी तरह से धन्यवाद जेवियर :) – timothyclifford

0

यह पता चला है कि आप aspx मार्कअप फ़ाइल में Page_Load ओवरराइड कर सकते हैं। वह फ़ाइल बेस फ़ाइल से प्राप्त होती है।

<%@ Control Language="C#" AutoEventWireup="true" 
    CodeBehind="TestUserControl.ascx.cs" Inherits="TestUserControl" %> 

उदाहरण ओवरराइड करने के लिए:

<script language="C#" runat="server"> 
    public void Page_Load(object sender, EventArgs e) 
    { 
     ... 
    } 
</script> 

इस समारोह कोड-पीछे संस्करण ओवरराइड करता है।

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