2011-04-13 102 views
4

如何在ASP.NET中創建事件處理代碼並在多個頁面上的控件之間共享它?在頁面之間共享事件處理程序代碼

例如,兩頁與

<asp:Repeater runat="server" OnItemCreated="NavigationItemCreated"> 

而不是複製它的每一頁我試圖把它變成一個類,這兩個網頁訪問

<asp:Repeater runat="server" OnItemCreated="MyHelper.NavigationItemCreated"> 

該類如下:

public class MyHelper 
{ 
    public static void NavigationItemCreated(object sender, RepeaterItemEventArgs e) { } 
    public static string MyProperty { get; set; } 
} 

但是,當我嘗試運行時出現錯誤(發生有或沒有static):

編譯器錯誤消息: CS1061:「ASP.page_default_aspx」不包含關於「MyHelper」和沒有擴展方法的定義「MyHelper」接受型的第一參數「ASP.page_default_aspx」能找到(是否缺少using指令或程序集引用?)

我仍然可以訪問MyProperty<%# MyHelper.MyProperty %>,所以MyHelper可以通過頁面中使用,只是沒有被事件處理程序。

更新:
製造類和事件處理代碼的靜態和,不能正常工作,同樣沒有把它變成它自己的命名空間,並使用MyNamespace.MyHelper.NavigationItemCreated

回答

1

您可以創建一個用戶控件,或讓你自己的類擴展標準的Repeater類。在此自定義控件中,實現了常見的OnItemCreated功能。

0

這將工作

  1. 是你MyHelper類是在的app_code

  2. ,如果超過支票你在你的默認頁面的代碼隱藏文件中包含的命名空間包含MyHelper類的定義

+0

該類位於App_Code文件中,沒有名稱空間(所以應位於全局ASP名稱空間中?)。事實上,我可以訪問屬性確定表明這是另一個問題 – SamWM 2011-04-13 09:54:03

+0

@ SamWM =這是在我的項目中工作.................. – 2011-04-13 10:02:41

+0

頁面沒有代碼後面:'< %@ Page Language =「C#」MasterPageFile =「〜/ MasterPage.master」%>' – SamWM 2011-04-13 10:15:01

0

您可以創建一個基本頁面,並把常見的事件處理程序代碼有。

然後,在從該基頁繼承的子頁面中,可以調用基頁面事件處理程序方法。

這樣做你將有一箇中心點來管理通用代碼!無需在任何地方改變它。

相關問題