2012-07-05 71 views
1
 Instead of page_load i want to write PageName_Load, how can i do 

最近這個問題,有人問我公司在接受記者採訪時一個如何改名的Page_Load到PageName_load在asp.net

問候 普利文

+0

我知道這只是一個面試問題,但要記住:爲了代碼的可維護性,實際上這樣做是一個壞主意。 – mikemanne 2012-07-05 17:56:14

回答

5

在構造函數中附加一個事件處理它:

public class MyPage : System.Web.UI.Page 
{ 
    public MyPage() 
    { 
     this.Load += new EventHandler(MyPage_Load); 
    } 


    void MyPage_Load(object sender, EventArgs e) 
    { 

    } 
} 

我不相信在改變默認約定方面有任何支持;可能是錯的。

+0

@Brad - 你不需要包含'new EventHandler'。事實上,如果你有Resharper,它會將它標記爲「[冗餘顯式委託創建](http://stackoverflow.com/questions/863688/the-difference-between-implicit-and-explicit-delegate-creation與 - 和 - 無)「並提示您將其刪除。 – 2012-07-05 15:56:50

+0

同意,但我傾向於明確知道它是一個事件附件。 (此外,[MSDN也喜歡這樣做](http://msdn.microsoft.com/en-us/library/system.web.ui.control.load.aspx)!) – 2012-07-05 16:13:53

0

爲了補充布賴恩和無形的帖子,你也可以改變你的網頁模板創建一個頁面你所希望的方式。

導航到你的ASP模板目錄:

C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ Common7 \ IDE \的ItemTemplate \ CSHARP \網絡\ 1033

這可能會根據你的環境而改變,但這應該讓你在附近)。

找到並解壓WebForm.zip(始終保持備份!)。你會注意到在此模板的幾個文件:

  • Default.aspx
    ASPX頁面模板
  • Default.aspx.cs
    代碼隱藏範本(您通常會添加自己的代碼)
  • Default.aspx.designer.cs
    IDE - 生成的文件(管理頁面上的控件列表)。
  • WebForm.vstemplate 元數據描述所需的模板庫等

從那裏,幾個編輯使其它的默認行爲:

  1. 編輯Default.aspx的和刪除AutoEventWireup="true"標題。
  2. 編輯Default.aspx.cs,改變Page_LoadPageName_Load(或者你可以使用Page$classname$_Load我想...)
  3. 編輯Default.aspx.designer.cs,並添加結合this.Load += new EventHandler(PageName_Load)
  4. 構造

保存所有更改,重新壓縮回zip文件並確保它位於您的模板目錄中。現在所有新頁面都將使用該模板。

0
public class BasePage : System.Web.UI.Page 
{ 
    public BasePage() 
    { 
     var myPageLoadDelegate = (EventHandler)Delegate.CreateDelegate(typeof(EventHandler), this, this.GetType().BaseType.Name + "_Load", true, false); 
     if (myPageLoadDelegate != null) 
     { 
      this.Load += myPageLoadDelegate; 
     } 
    } 
} 

public partial class WebForm1 : BasePage 
{ 
    protected void WebForm1_Load(object sender, EventArgs e) 
    { 

    } 
} 
相關問題