2015-01-09 34 views
1

很多次我遇到這種情況,但不知道原因的確切原因。 是什麼本從服務器端附加事件和在aspx中寫入事件名稱之間的區別

grdQuotes.Sorting+=new GridViewSortEventHandler(grdQuotes_Sorting); 

並且這(在ASPX直接聲明)之間的差值

OnSorting="grdQuotes_Sorting" 

當我附着事件使用第一種方法提供功能的訪問級別是可選的,但如果我使用第二選項,並沒有提及任何訪問級別的功能,然後得到'功能無法訪問,由於其保護級別錯誤消息'

+1

附着事件處理程序的第一種方法提供了一種方式,以多個事件處理程序添加到同一事件。 [你注意到了那裏的+ =號] – Thangadurai

+0

正如@Thangadurai所說的。看看多播代表。 http://msdn.microsoft.com/es-es/library/ms173175.aspx – jlvaquero

回答

0

據我所知沒有不同在aspx代碼中的綁定事件和在後面的代碼中進行綁定。然而,正如Thangadurai所說 - 當你在後面的代碼中處理事件時,你可以將多個處理程序附加到一個事件中。

說到保護級別 - aspx代碼無法訪問私有方法背後的代碼(並且如果您在私有方法之前未提及任何訪問級別)。這裏有一個例子:

後面的代碼:

public void Test() 
{ 
    lblTest.Text = "clicked code behind"; 
} 

.aspx的:

<script runat="server"> 
    void btnTest_Click(object sender, EventArgs e) 
    { 
     Test(); 
    } 
</script> 

如果更改試驗方法的訪問級別私有到btnTest_Click方法將無法看到它。只有公共的,受保護和受保護的內部方法纔可以用aspx代碼調用。

這是因爲在.aspx頁面的代碼隱藏類繼承:

如果使用代碼隱藏類文件與.aspx頁,你可以單獨 從核心應用程序邏輯的演示代碼(或代碼隱藏 )。代碼隱藏類文件被編譯爲可以創建並用作對象的 。這允許訪問其屬性, 其方法,其處理程序和事件處理程序。爲此,.aspx頁面 必須指定從代碼隱藏基類繼承。爲此, 對@ Page指令使用Inherits屬性。 .aspx頁面 繼承自代碼隱藏類,代碼隱藏類 繼承自Page類。

http://support.microsoft.com/kb/312311

+0

謝謝你這麼好的解釋.. – Tweety01

+0

不客氣。 – Landeeyo

相關問題