我创建了一个用户控件,里面有一个单选按钮。我还创建了一个类型单选按钮的公共属性,并为其分配了单选按钮,因此可以在后面的aspx页面代码中访问。
public partial class WebUserControl : System.Web.UI.UserControl
{
public RadioButton radiobtn { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
initiateControls();
}
private void initiateControls()
{
radiobtn = RadioButton1;
}
}
现在我已将该用户控件拖入.aspx页面,并尝试访问用户控件中的单选按钮,但是引发了空引用异常'。
的.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<%@ Register src="UserControls/WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<uc1:WebUserControl ID="WebUserControl1" runat="server" />
</div>
</form>
</body>
</html>
的.cs
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
try
{
WebUserControl1.radiobtn.Visible = false;
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
}
答案 0 :(得分:1)
您应该实现get属性:
public RadioButton radiobtn
{
get
{
return RadioButton1;
}
}
答案 1 :(得分:0)
您页面Page_Load在控件的Page_Load之前运行。
此页面显示事件的顺序:
https://msdn.microsoft.com/en-us/library/ms178472.aspx
您可以访问LoadComplete或PreRender中的控件,但不能访问Page_Load