खोज…


वाक्य - विन्यास

  1. public delegate void ActionClick();

    public event ActionClick OnResetClick;
    

टिप्पणियों

मुझे इस दृष्टिकोण में कोई कमी नहीं मिली है लेकिन कुछ चीजें हैं जो इसे थोड़ा समस्याग्रस्त बनाती हैं।

  1. आपको प्रत्येक ईवेंट के लिए एक इवेंट हैंडलर जोड़ने की आवश्यकता है। यदि आप पृष्ठ के OnInit ईवेंट में ईवेंट हैंडलर नहीं जोड़ते हैं, तो आपको कुछ समस्याओं का सामना करना पड़ सकता है, जो पेज पोस्ट बैक पर हैं, आप ईवेंट असाइनमेंट खो देंगे (जैसा कि ASP.NET स्टेटलेस है, जो कि विंडोज कंट्रोल के मामले में नहीं है) ।
  2. इस दृष्टिकोण में, आपको पृष्ठ जीवन चक्र की घटनाओं का सम्मान करने की आवश्यकता है। कुछ बार जब आप डिजाइनर पर काम कर रहे होते हैं, तो एक मामला हो सकता है जब इवेंट हैंडलर आपकी सूचना के बिना खो जाता है।
  3. यहां तक कि अगर आपने ईवेंट हैंडलर को नहीं जोड़ा है, तो भी आपको कोई त्रुटि या चेतावनी नहीं मिलेगी। यदि आपके पास समान कार्य करने के लिए कई पृष्ठ हैं, तो इस बात की कोई गारंटी नहीं है कि सभी विधि नाम समान होंगे; डेवलपर अपने स्वयं के विधि नाम चुन सकता है, जो कोड की स्थिरता को कम करता है।

उपयोगकर्ता नियंत्रण से Aspx में इवेंट का प्रतिनिधिमंडल

आम तौर पर, हम इस दृष्टिकोण का चयन करते हैं यदि हम पूर्ण इनकैप्सुलेशन चाहते हैं और हमारे तरीकों को सार्वजनिक नहीं करना चाहते हैं।

ascx

<div style="width: 100%;">
  <asp:Button ID="btnAdd" runat="server" 
    Text="Add" OnClick="btnAdd_Click"></asp:button>
  <asp:button id="btnEdit" runat="server" 
    text="Edit" onclick="btnEdit_Click"> </asp:button>
  <asp:button id="btnDelete" runat="server" 
    text="Delete" onclick="btnDelete_Click">    </asp:Button>
  <asp:button id="btnReset" runat="server" 
    text="Reset" onclick="btnReset_Click"></asp:button>
</div>

Ascx.cs

public delegate void ActionClick();

public partial class EventDelegation : System.Web.UI.UserControl
{
    public event ActionClick OnAddClick;
    public event ActionClick OnDeleteClick;
    public event ActionClick OnEditClick;
    public event ActionClick OnResetClick;
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        if(OnAddClick!= null)
        {
            OnAddClick();
        }
    }

    protected void btnEdit_Click(object sender, EventArgs e)
    {
        if (OnEditClick != null)
        {
            OnEditClick();
        }
    }

    protected void btnDelete_Click(object sender, EventArgs e)
    {
        if(OnDeleteClick!= null)
        {
            OnDeleteClick();
        }
    }

    protected void btnReset_Click(object sender, EventArgs e)
    {
        if(OnResetClick!= null)
        {
            OnResetClick();
        }
    }
}

उपयोगकर्ता नियंत्रण OnAddClick , OnEditClick , आदि जैसे कुछ सार्वजनिक कार्यक्रमों को निर्दिष्ट करता है, जो एक प्रतिनिधि की घोषणा करते हैं। जो कोई भी इन घटनाओं का उपयोग करना चाहता है, उसे संबंधित बटन क्लिक करने पर होने वाली घटना को अंजाम देने के लिए EventHandler को जोड़ना होगा।

Aspx डिजाइन

<%@ Register src="Controls/EventDelegation.ascx" 
       tagname="EventDelegation" tagprefix="uc1" %>
    
    <!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 runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <uc1:Direct ID="Direct1" runat="server" />
        </div>
        </form>
    </body>
    </html>

Aspx.cs

public partial class EventDelegation : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        ActionControl.OnAddClick += ActionControl_OnAddClick;
        ActionControl.OnDeleteClick += ActionControl_OnDeleteClick;
        ActionControl.OnEditClick += ActionControl_OnEditClick;
        ActionControl.OnResetClick += ActionControl_OnResetClick;
    }

    private void ActionControl_OnResetClick()
    {
        Response.Write("Reset done.");
    }

    private void ActionControl_OnEditClick()
    {
        Response.Write("Updated.");
    }

    private void ActionControl_OnDeleteClick()
    {
        Response.Write("Deleted.");
    }

    private void ActionControl_OnAddClick()
    {
        Response.Write("Added.");
    }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow