在线等待:动态加载用户控件的问题!(高手请进)

real52525 real52525 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我建了一个用户控件(WebUserControl.ascx)里面有三个TextBox(TextBox1,2,3)并暴露了其text属性.我想在主页面打开时加载多个此用户控件并给各用户控件中TextBox1赋值.当客户客户端给TextBox2和3赋值后点击按钮时能读出三个TextBox中的值.代码如下:
WebUserControl.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>

WebUserControl.ascx.cs:

private string _item1, _item2, _item3;
public string Item1
{
set
{
_item1 = value;
}
get
{
return _item1;
}
}
public string Item2
{
set
{
_item2 = value;
}
get
{
return _item2;
}
}
public string Item3
{
set
{
_item3 = value;
}
get
{
return _item3;
}
}
protected void Page_Load(object sender, EventArgs e)
{
TextBox1.Text = _item1;
_item2 = TextBox2.Text;
_item3 = TextBox3.Text;
}


Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Debug="true" %>
<%@ Register TagPrefix="WebUserControl" TagName="WebUserControl" Src="~/WebUserControl.ascx" %>
<!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 runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px">
</asp:Panel>
<asp:Button ID="Btn" runat="server" Text="Button" OnClick="Btn_Click" />
</div>
</form>
</body>
</html>



Default.aspx.cs

public partial class _Default : System.Web.UI.Page
{
override protected void OnInit(EventArgs e)
{

for (int i = 0; i < 5; i++)
{
WebUserControl mycontrol = (WebUserControl)LoadControl("WebUserControl.ascx");
mycontrol.Attributes.Add("runat", "server");
mycontrol.Attributes.Add("ID", "Mycontrol" + i.ToString());
mycontrol.Item1 = i.ToString();
Panel1.Controls.Add(mycontrol);
}

base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Btn_Click(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
WebUserControl myct=(WebUserControl)Panel1.FindControl("Mycontrol"+i.ToString());
Response.Write("item1:" + myct.Item1+"<br>item2:"+myct.Item2+"<br>item3:"+myct.Item3);
}
}
}



现在的问题是当我点击提交按钮时提示:

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 43: {
行 44: WebUserControl myct=(WebUserControl)Panel1.FindControl("Mycontrol"+i.ToString());
行 45: Response.Write("item1:" + myct.Item1+"<br>item2:"+myct.Item2+"<br>item3:"+myct.Item3);
行 46: }
行 47: }

...全文
评论 4
收藏 已收藏
分享
返回顶部
real52525
.NET社区 62,272 成员 668,968 内容