需要在CUW步骤中存储额外的userinfo
// register.aspx
<p>
<b>HomeTown:</b><br /> <asp:TextBox ID = "HomeTown" runat ="server"></asp:TextBox>
</p>
<p>
<b>HomepageUrl:</b><br /> <asp:TextBox ID = "HomepageUrl" runat ="server"></asp:TextBox>
</p>
<p>
<b>Signature:</b><br /> <asp:TextBox ID = "Signature" runat ="server"></asp:TextBox>
</p>
</asp:WizardStep>
<asp:CompleteWizardStep runat="server" />
</WizardSteps>
</asp:CreateUserWizard>
//这是代码背后的一部分 WizardStep UserSettings = NewUserWizard.FindControl(“UserSettings”)作为WizardStep;
// Programmatically reference the TextBox controls
TextBox HomeTown = UserSettings.FindControl("HomeTown") as TextBox;...ERROR Object reference not set to an instance of an object.
感谢您的帮助
答案 0 :(得分:2)
你很有可能已经找到了这个问题的答案或者继续前进,但我在自己的搜索中发现了这个问题,并认为我会为其他可能正在搜索的人提供答案。
上面示例的问题(除了顶部缺少的代码,告诉我您的步骤的ID)是您需要单独查找向导的每个步骤中的控件。因此,如果您在向导的第一步中查找超链接,那么可以找到它:
TextBox HomeTown = (TextBox)UserSettings.WizardSteps[0].FindControl("HomeTown");
如果您不想假设使用HomeTown文本框的步骤始终是集合中的第一步,那么这将起作用:
WizardStep wizStep (WizardStep)wizSample.FindControl("SampleStepName");
TextBox HomeTown = (TextBox)wizStep.FindControl("HomeTown");
在我的情况下,我正在寻找的控件是在TemplatedWizardStep中,所以我不得不使用以下代码:
TemplatedWizardStep wizStep = (TemplatedWizardStep)wizSample.FindControl("SampleStepName");
Panel pnlSample =(Panel)wizStep.ContentTemplateContainer.FindControl("pnlSample");
pnlSample .Visible = true;
注意:我使用的是Wizard类,因为CreateUserWizard类基于向导,我认为上面的代码对两者都有效。