1
      Instead of page_load i want to write PageName_Load, how can i do 

最近这个问题被问到我面试的公司之一

问候普拉文

4

4 回答 4

5

在构造函数中附加一个事件处理程序:

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


   void MyPage_Load(object sender, EventArgs e)
   {

   }
}

我不相信更改默认约定有任何支持;可能是错的。

于 2012-07-05T15:51:24.607 回答
1

很久以前在 StackOverflow 上对它进行了很好的描述:什么调用 Page_Load 以及它是如何做到的?

于 2012-07-05T15:59:40.437 回答
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)
    {

    }
}
于 2012-07-05T18:11:51.997 回答
0

为了补充 Brian 和 invisible 的帖子,您还可以更改 Web 模板以按照您想要的方式创建页面。

导航到您的 ASP 模板目录:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\1033

这可能会根据您的环境而改变,但这应该让您在附近)。

找到并提取WebForm.zip (始终保持备份!)。您会注意到此模板中的一些文件:

  • Default.aspx
    ASPX 页面模板
  • Default.aspx.cs
    代码隐藏模板(您通常会在其中添加自己的代码)
  • Default.aspx.designer.cs
    IDE 生成的文件(管理页面上的控件列表)。
  • WebForm.vstemplate 描述模板所需库等的元数据。

从那里,一些编辑使其成为默认行为:

  1. 编辑Default.aspxAutoEventWireup="true"从标题中删除。
  2. 编辑Default.aspx.cs并更改Page_LoadPageName_Load(或者您可以使用Page$classname$_Load我想...)
  3. 编辑Default.aspx.designer.cs并添加一个绑定的构造函数this.Load += new EventHandler(PageName_Load)

保存所有更改,重新压缩回 zip 文件并确保它在您的模板目录中。现在所有新页面都将使用该模板。

于 2012-07-05T16:11:05.473 回答