我正在使用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)
{
}
}
}
答案 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
就不会在标记方面运行。