[英]Page_Load not firing in UserControl
我已经在类库中的c#中创建了一个类,并且我已将此控件添加到default.aspx中,但是我的代码没有触发page_load事件。 这是代码:
我做错了什么?
页面加载但不显示页面上的标签。 我已将控件正确添加到页面中,没有任何错误。 我有事件在那里添加了寄存器标签。
html标记: <RandoIntegerControls:RandomIntegerControl ID="RandomIntegerControl1" runat="server"></RandoIntegerControls:RandomIntegerControl>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
namespace CSIMedia.WebControls
{
public class RandomIntegerControl : PlaceHolder
{
private Label _Label;
public RandomIntegerControl()
{
}
private void Page_Load(Object sender, EventArgs e)
{
this._Label = new Label();
this.Controls.Add(this._Label);
this._Label.Text = "Enter random values:";
}
}
}
Default.aspx页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="RandoIntegerControls" Assembly="CSIMedia.WebControls" Namespace="CSIMedia.WebControls"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<RandoIntegerControls:RandomIntegerControl ID="RandomIntegerControl1" runat="server"></RandoIntegerControls:RandomIntegerControl>
</div>
</form>
</body>
</html>
试试这个:
public RandomIntegerControl()
{
this.Load += Page_Load;
}
在页面(和用户控件)中,由于此属性,Page_Load方法通常会自动附加:
<%@ Page ... AutoEventWireup="true" ... %>
如果你没有aspx / ascx文件,它不会自动发生,但你仍然可以使用上面的代码手动连接它。
您继承自PlaceHolder,它是一个Web控件,不会处理Page_Load事件。 只有用户控件(.ascx)才能隐式处理该事件。
根据您发布的代码的外观,您最好使用UserControl,或者如果您需要在多个项目中重用它,请从头开始创建Web控件。
事实证明,您可以覆盖aspx
标记文件中的Page_Load
。 该文件继承自基本文件。
<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="TestUserControl.ascx.cs" Inherits="TestUserControl" %>
覆盖示例:
<script language="C#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
...
}
</script>
此函数会覆盖代码隐藏版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.