I am working on a project in Microsoft Visual Studio using an ASP.NET web application with code behind in C#. I added a CreateUserWizard and customized the form in step 1. From the events handler I put a CreatedUser handler into the codebehind to update database tables.
I want to pull the data values for the handler from the form, but the codebehind file can’t see them for some reason. Help!
Main Page
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="PageControls" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="RightBox" runat="server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="SiteControl1" runat="server">
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="SiteControl2" runat="server">
</asp:Content>
<asp:Content ID="Content6" ContentPlaceHolderID="SiteControl3" runat="server">
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="CPMain" runat="server">
<center>
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"
CreateUserButtonText="Submit"
RequireEmail="False" OnCreatedUser="CreateUserWizard1_CreatedUser">
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
<ContentTemplate>
<table border="0" style="font-size: 100%">
<tr>
<td align="center" colspan="2" style="font-weight:
bold; color: white; background-color: #5d7b9d">
Register with Acme!
</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="Label1" runat="server"
AssociatedControlID="UserName">
First Name:</asp:Label>
</td>
<td>
<asp:TextBox ID="FName" runat="server">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator1" runat="server" ControlToValidate="FirstName"
ErrorMessage="First Name is required."
ToolTip="First Name is required." ValidationGroup="CreateUserWizard1">*
</asp:RequiredFieldValidator>
</td>
<tr>
<td align="right">
<asp:Label ID="Label2" runat="server">
Last Name:</asp:Label>
</td>
<td>
<asp:TextBox ID="LName" runat="server">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator2" runat="server" ControlToValidate="LastName"
ErrorMessage="Last Name is required."
ToolTip="Last Name is required." ValidationGroup="CreateUserWizard1">*
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="UserNameLabel" runat="server"
AssociatedControlID="UserName">
User Name:</asp:Label>
</td>
<td>
<asp:TextBox ID="UserName" runat="server">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="UserNameRequired" runat="server" ControlToValidate="UserName"
ErrorMessage="User Name is required."
ToolTip="User Name is required." ValidationGroup="CreateUserWizard1">*
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="PasswordLabel" runat="server"
AssociatedControlID="Password">
Password:</asp:Label>
</td>
<td>
<asp:TextBox ID="Password" runat="server"
TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator
ID="PasswordRequired" runat="server" ControlToValidate="Password"
ErrorMessage="Password is required."
ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="ConfirmPasswordLabel"
runat="server" AssociatedControlID="ConfirmPassword">
Confirm Password:</asp:Label>
</td>
<td>
<asp:TextBox ID="ConfirmPassword"
runat="server" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator
ID="ConfirmPasswordRequired" runat="server" ControlToValidate="ConfirmPassword"
ErrorMessage="Confirm Password is
required." ToolTip="Confirm Password is required."
ValidationGroup="CreateUserWizard1">*
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:CompareValidator ID="PasswordCompare"
runat="server" ControlToCompare="Password"
ControlToValidate="ConfirmPassword"
Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."
ValidationGroup="CreateUserWizard1">
</asp:CompareValidator>
</td>
</tr>
<tr>
<td align="center" colspan="2" style="color: red">
<asp:Literal ID="ErrorMessage" runat="server"
EnableViewState="False"></asp:Literal>
</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="Label3" runat="server"
AssociatedControlID="UserName">
Role:</asp:Label>
</td>
<td>
<asp:DropDownList ID="RoleSelector"
runat="server">
<asp:ListItem
Value="Visitor">Visitor</asp:ListItem>
<asp:ListItem
Value="Employee">Employee</asp:ListItem>
<asp:ListItem Value="PM">Project
Manager</asp:ListItem>
<asp:ListItem Value="DM">Department
Manager</asp:ListItem>
<asp:ListItem Value="Director">IT
Director</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
</table>
</ContentTemplate>
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server">
<ContentTemplate>
</ContentTemplate>
</asp:CompleteWizardStep>
</WizardSteps>
</asp:CreateUserWizard>
</center>
</asp:Content>
CodeBehind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Principal;
namespace Acme
{
public partial class Register : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
RolesManager.InsertEmployee(FName.Text, LName.Text, RoleSelector.Value,
User.Identity);
}
}
}
I get these errors at compile time:
Error 1 The name 'FName' does not exist in the current context C:\MV_Training\Jan2013\C#Projects\AcmePresentation\AcmePresentation\Register.aspx.cs 20 41 AcmePresentation
Error 2 The name 'LName' does not exist in the current context C:\MV_Training\Jan2013\C#Projects\AcmePresentation\AcmePresentation\Register.aspx.cs 20 53 AcmePresentation
Error 3 The name 'RoleSelector' does not exist in the current context C:\MV_Training\Jan2013\C#Projects\AcmePresentation\AcmePresentation\Register.aspx.cs 20 65 AcmePresentation
and this from the browser:
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS1061: ‘ASP.register_aspx’ does not contain a definition for ‘CreateUserWizard1_CreatedUser’ and no extension method ‘CreateUserWizard1_CreatedUser’ accepting a first argument of type ‘ASP.register_aspx’ could be found (are you missing a using directive or an assembly reference?)
Source Error:
Line 16: <asp:Content ID="Content7" ContentPlaceHolderID="CPMain" runat="server">
Line 17: <center>
Line 18: <asp:CreateUserWizard ID="CreateUserWizard1" runat="server"
Line 19: CreateUserButtonText="Submit" RequireEmail="False"
Line 20: oncreateduser="CreateUserWizard1_CreatedUser">
Source File: c:\MV_Training\Jan2013\C#Projects\AcmePresentation\AcmePresentation\Register.aspx Line: 18
Thanks,
Bill
You want to cast controls explicitly something like this –