【发布时间】:2011-09-05 19:45:58
【问题描述】:
我正在尝试动态创建控件并在运行时为其赋予属性。
我已将代码放入 Page_Init 事件中,当我运行我的网站时,我可以看到我的控件,但是当我单击提交按钮时,出现错误,提示“对象引用未设置为对象的实例”。
这是我使用的代码:
//Creates instances of the Control
Label FeedbackLabel = new Label();
TextBox InputTextBox = new TextBox();
Button SubmitButton = new Button();
// Assign the control properties
FeedbackLabel.ID = "FeedbackLabel";
FeedbackLabel.Text = "Please type your name: ";
SubmitButton.ID = "SubmitButton";
SubmitButton.Text = "Submit";
InputTextBox.ID = "InputTextBox";
// Create event handlers
SubmitButton.Click += new System.EventHandler(SubmitButton_Click);
// Add the controls to a Panel
Panel1.Controls.Add(FeedbackLabel);
Panel1.Controls.Add(InputTextBox);
Panel1.Controls.Add(SubmitButton);
}
protected void SubmitButton_Click(object sender, EventArgs e)
{
// Create an instance of Button for the existing control
Button SubmitButton = (Button)sender;
// Update the text on the Button
SubmitButton.Text = "Submit again!";
// Create the Label and TextBox controls
Label FeedbackLabel = (Label)FindControl("FeedbackLabel");
TextBox InputTextBox = (TextBox)FindControl("InputTextBox");
// Update the controls
FeedbackLabel.Text = string.Format("Hi, {0}", InputTextBox.Text);
我该如何解决这个错误?
这是堆栈跟踪
[NullReferenceException:对象引用未设置为对象的实例。] _Default.Page_PreInit(Object sender, EventArgs e) 在 c:\Users\bilalq\Documents\Visual Studio 2010\WebSites\WebSite3\Default.aspx.cs:31 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,对象 o,对象 t,EventArgs e)+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象发送者,EventArgs e)+35 System.Web.UI.Page.OnPreInit(EventArgs e) +8876158 System.Web.UI.Page.PerformPreInit() +31 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +328
【问题讨论】:
-
错误出现在哪一行?
-
您在哪一行得到异常?
-
@Neil,他说点击提交时出现错误。我认为它找不到控件(因为它们被添加到面板,而不是直接添加到页面)。
-
今天的反对票似乎有点苛刻
-
@qablan89,你能给我们一些来自堆栈跟踪的信息吗?异常是从哪一行抛出的?
标签: c# asp.net dynamic-controls