2012-12-01 61 views
4

我創建了一個簡單的CreateUserWizard來註冊我的用戶。我已經添加了2個文本框:姓氏和名字。訪問用戶註冊嚮導中的自定義字段

現在,我想在用戶註冊時將它們添加到我的數據庫中。 這裏是我做了什麼:

<asp:CreateUserWizard ID="RegisterUser" runat="server" EnableViewState="false" OnCreatedUser="RegisterUser_CreatedUser" RequireEmail="false"> 
    <WizardSteps> 
    <asp:CreateUserWizardStep ID="RegisterUserWizardStep0" runat="server"> 
     <ContentTemplate> 
     <asp:TextBox ID="LastName" runat="server" ></asp:TextBox> 
     [...] 
     <asp:Button ID="CreateUserButton" runat="server" CommandName="MoveNext" Text="S'inscrire" 
      ValidationGroup="RegisterUserValidationGroup"/> 

而在.cs文件:

protected void RegisterUser_CreatedUser(object sender, EventArgs e) 
{ 
    TextBox test = RegisterUser.FindControl("LastName") as TextBox; 
    // Or using the generated ID 
    TextBox test2 = RegisterUser.FindControl("MainContent_RegisterUser_CreateUserStepContainer_LastName") as TextBox; 
} 

但無論我嘗試,我的文本框總是null ...

我錯過什麼?我怎麼能得到這些TextBox的價值?

編輯: 該解決方案爲我工作:

(TextBox)RegisterUser.WizardSteps[0].FindControl("CreateUserStepContainer").FindControl("LastName"); 

唯一的問題是我用調試器找到容器名稱「CreateUserStepContainer」 ......

+0

我很抱歉,我使用的嚮導控制代替的CreateUserWizard(不應該在週六工作)。爲什麼不直接訪問UserName屬性?你真的需要訪問textbos嗎? (我在答案中提供瞭解決方案)。 – slfan

+0

實際上,UserName包含我的代碼中的電子郵件地址。 LastName和FirstName是來自ProfileBase擴展的自定義字段。我無法直接訪問它們(就像你爲UserName所做的那樣),因爲它們不是CreateUserWizard的默認字段。 (不知道我是否真的很清楚......) – Arthur

回答

2

該解決方案爲我工作:

(TextBox)RegisterUser.WizardSteps[0].FindControl("CreateUserStepContainer").FindControl("LastName"); 
1

你必須找到從CreateUserWizard.CreateUserWizardStep.ContentTemplateContainer.control
控制這樣做:

TextBox test = (TextBox)RegisterUser.RegisterUserWizardStep0.ContentTemplateContainer.FindControl("LastName"); 
+0

正如我對slfan所說的,我無法直接訪問'RegisterUserWizardStep0'。根據你所說的,我試過'TextBox t =(TextBox)RegisterUser.CreateUserStep.Wizard.TemplateControl.FindControl(「LastName」);'。但它不會更好... – Arthur

相關問題