我可以在我的aspx文件中使用Page_Load吗?

时间:2014-07-01 15:42:24

标签: c# asp.net

我正在使用VisualStudio 2013 Express for WEB,我创建了一个空的Web应用程序,然后添加了一个新的Web表单。

我正在尝试学习ASP.NET,并且我了解到在会话/页面生命周期中有Page_Load,我可以在其中执行将在页面加载后发生的事情。问题是我了解到可以在<script>标记之前将Page_Load事件放在<HTML>下。

(aspx文件名是Register)当我尝试这个时:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx.cs" Inherits="Learning.Register" %>

<!DOCTYPE html>
<script runat="server">
   int randomnumber = 0;
    public void Page_Load()
    {
        Random rnd = new Random();
        randomnumber = rnd.Next(100000, 1000000);
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <% Response.Write(randomnumber); %>
    </div>
    </form>
</body>
</html>

由于某种原因,我得到的只是0。

另外,我注意到在Register.aspx.cs下我有这个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Learning
{
    public partial class Register : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

2 个答案:

答案 0 :(得分:3)

您绝对可以使用脚本标记将服务器端代码放在aspx中。但是页面加载语法应该与后面的代码(.cs文件)完全匹配

Page_Load(object sender, EventArgs e)

在您的脚本代码中,您只有Page_Load(),它根本不会触发。 如果您需要将其删除,则需要删除后面代码中的函数并替换脚本标记中的方法签名

答案 1 :(得分:1)

在脚本标记中

,您需要base.OnLoad(e)

protected void Page_Load(object sender, EventArgs e)
{
    base.OnLoad(e)
    Random rnd = new Random();
    randomnumber = rnd.Next(100000, 1000000);
}

那是因为你要覆盖基类的行为,如果你不打电话给base.OnLoad(e),那么Page_Load就不会在标记方面运行。