我創建了一個簡單的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」 ......
我很抱歉,我使用的嚮導控制代替的CreateUserWizard(不應該在週六工作)。爲什麼不直接訪問UserName屬性?你真的需要訪問textbos嗎? (我在答案中提供瞭解決方案)。 – slfan
實際上,UserName包含我的代碼中的電子郵件地址。 LastName和FirstName是來自ProfileBase擴展的自定義字段。我無法直接訪問它們(就像你爲UserName所做的那樣),因爲它們不是CreateUserWizard的默認字段。 (不知道我是否真的很清楚......) – Arthur