ASP で CreateUserWizardControl を使用しており、登録フォームのデータを独自のテーブルに書き込みたいと考えています。ユーザーが作成された瞬間にそうしたいのです。
私がデバッグするとき、これに関する問題は、この行で、前の行で宣言したテキストボックス t が UserName テキストボックスを取得しないことです。null ではないため、何かが見つかりますが、 t のテキスト プロパティは空の文字列です。
t = (TextBox)(this.CreateUserWizard1.FindControl("UserName"));
次の行で、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」という例外がスローされます。
o.organisation_name = t.Text;
以下は私の完全なコードビハインドファイルです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
public partial class registreer : System.Web.UI.Page
{
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
try
{
BLLorganisation BLLo = new BLLorganisation();
Organisation o = new Organisation();
TextBox t = new TextBox();
t = (TextBox)(this.CreateUserWizard1.FindControl("UserName"));
o.organisation_name = t.Text;
o.fk_user_id = (Guid)(Membership.GetUser(CreateUserWizard1.UserName).ProviderUserKey);
BLLo.insertOneOrganisation(o);
}
catch (Exception ex)
{
feedback.InnerHtml = ex.Message;
feedback.Style.Add("display", "block");
}
}
}
そして、ここにマークアップの私のコントロールがあります:
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"
oncreateduser="CreateUserWizard1_CreatedUser">
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server"
Title="Registreer uw organisatie">
<ContentTemplate>
<table>
<tr>
<td align="center" colspan="2">
<h1>Registreer uw organisatie</h1></td>
</tr>
<tr>
<td align="right">
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Naam van de organisatie:</asp:Label>
</td>
<td>
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server"
ControlToValidate="UserName" ErrorMessage="Vul de naam van uw organisatie in."
ToolTip="Vul de naam van uw organisatie in." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
</td>
</tr>
誰が何がうまくいかないのか考えていますか? さらにコードが必要な場合はお知らせください。