Instead of page_load i want to write PageName_Load, how can i do
最近這個問題,有人問我公司在接受記者採訪時一個如何改名的Page_Load到PageName_load在asp.net
問候 普利文
Instead of page_load i want to write PageName_Load, how can i do
最近這個問題,有人問我公司在接受記者採訪時一個如何改名的Page_Load到PageName_load在asp.net
問候 普利文
在構造函數中附加一個事件處理它:
public class MyPage : System.Web.UI.Page
{
public MyPage()
{
this.Load += new EventHandler(MyPage_Load);
}
void MyPage_Load(object sender, EventArgs e)
{
}
}
我不相信在改變默認約定方面有任何支持;可能是錯的。
@Brad - 你不需要包含'new EventHandler'。事實上,如果你有Resharper,它會將它標記爲「[冗餘顯式委託創建](http://stackoverflow.com/questions/863688/the-difference-between-implicit-and-explicit-delegate-creation與 - 和 - 無)「並提示您將其刪除。 – 2012-07-05 15:56:50
同意,但我傾向於明確知道它是一個事件附件。 (此外,[MSDN也喜歡這樣做](http://msdn.microsoft.com/en-us/library/system.web.ui.control.load.aspx)!) – 2012-07-05 16:13:53
它是很好的描述很久以前在這裏的StackOverflow:What calls Page_Load and how does it do it?
爲了補充布賴恩和無形的帖子,你也可以改變你的網頁模板創建一個頁面你所希望的方式。
導航到你的ASP模板目錄:
C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ Common7 \ IDE \的ItemTemplate \ CSHARP \網絡\ 1033
這可能會根據你的環境而改變,但這應該讓你在附近)。
找到並解壓WebForm.zip
(始終保持備份!)。你會注意到在此模板的幾個文件:
Default.aspx
Default.aspx.cs
Default.aspx.designer.cs
WebForm.vstemplate
元數據描述所需的模板庫等從那裏,幾個編輯使其它的默認行爲:
AutoEventWireup="true"
標題。Page_Load
到PageName_Load
(或者你可以使用Page$classname$_Load
我想...)this.Load += new EventHandler(PageName_Load)
保存所有更改,重新壓縮回zip文件並確保它位於您的模板目錄中。現在所有新頁面都將使用該模板。
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)
{
}
}
我知道這只是一個面試問題,但要記住:爲了代碼的可維護性,實際上這樣做是一個壞主意。 – mikemanne 2012-07-05 17:56:14