Instead of page_load i want to write PageName_Load, how can i do
最近这个问题被问到我面试的公司之一
问候普拉文
在构造函数中附加一个事件处理程序:
public class MyPage : System.Web.UI.Page
{
public MyPage()
{
this.Load += new EventHandler(MyPage_Load);
}
void MyPage_Load(object sender, EventArgs e)
{
}
}
我不相信更改默认约定有任何支持;可能是错的。
很久以前在 StackOverflow 上对它进行了很好的描述:什么调用 Page_Load 以及它是如何做到的?
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)
{
}
}
为了补充 Brian 和 invisible 的帖子,您还可以更改 Web 模板以按照您想要的方式创建页面。
导航到您的 ASP 模板目录:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\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 文件并确保它在您的模板目录中。现在所有新页面都将使用该模板。