<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
Code-Behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.Visible = false;
BindData();
Clear();
}
}
protected void Clear()
{
txtregid.Text = "";
txtfirstname.Text = "";
txtLastname.Text = "";
txtusername.Text = "";
txtaddress.Text = "";
txtemailid.Text = "";
RadioButtonList1.SelectedIndex = -1;
}
protected void BindData()
{
using (SqlConnection con = new SqlConnection(DataBaseHelper.Connectionstring))
{
con.Open();
SqlCommand cmd = new SqlCommand("Select FirstName,LastName,UserName,Password,EmailId,Address,Gender,ConfirmPassword,RegistrationID from Regestration", con);
SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
con.Close();
}
}
protected void btnSignUp_Click(object sender, EventArgs e)
{
string strinsert = "insert into Regestration (FirstName,LastName,UserName,Password,EmailId,Address,Gender,ConfirmPassword,RegistrationID)"
+ "values(@fn,@ln,@un,@pwd,@emailid,@address,@gender,@cpwd,@registrationid)";
SqlConnection con = new SqlConnection(DataBaseHelper.Connectionstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strinsert;
SqlParameter parafn = new SqlParameter("@fn", SqlDbType.VarChar, 50);
SqlParameter paraln = new SqlParameter("@ln", SqlDbType.VarChar, 50);
SqlParameter paraun = new SqlParameter("@un", SqlDbType.VarChar, 50);
SqlParameter parapwd = new SqlParameter("@pwd", SqlDbType.VarChar, 50);
SqlParameter paraemailid = new SqlParameter("@emailid", SqlDbType.VarChar, 50);
SqlParameter paraaddress = new SqlParameter("@address", SqlDbType.VarChar, 50);
SqlParameter paragender = new SqlParameter("@gender", SqlDbType.VarChar, 50);
SqlParameter paracpwd = new SqlParameter("@cpwd", SqlDbType.VarChar, 50);
SqlParameter pararegisid = new SqlParameter("@registrationid", SqlDbType.Int);
cmd.Parameters.Add(parafn);
cmd.Parameters.Add(paraln);
cmd.Parameters.Add(paraun);
cmd.Parameters.Add(parapwd);
cmd.Parameters.Add(paraemailid);
cmd.Parameters.Add(paraaddress);
cmd.Parameters.Add(paragender);
cmd.Parameters.Add(paracpwd);
cmd.Parameters.Add(pararegisid);
parafn.Value = txtfirstname.Text;
paraln.Value = txtLastname.Text;
paraun.Value = txtusername.Text;
parapwd.Value = txtpwd.Text;
paraemailid.Value = txtemailid.Text;
paraaddress.Value = txtaddress.Text;
paragender.Value = RadioButtonList1.SelectedItem.ToString();
paracpwd.Value = txtcpwd.Text;
pararegisid.Value =Convert.ToInt32( txtregid.Text);
try
{
con.Open();
cmd.ExecuteNonQuery();
lblresult.Text = "Insert Sucess";
}
catch (SqlException ex)
{
string str = "Error in Registration Page";
str += ex.Message;
throw new Exception(str);
}
finally
{
con.Close();
// Response.Redirect(Request.Url.ToString(), false);
}
GridView1.Visible = true;
BindData();
Clear();
}
}
DataBase:
USE [RegestrationUser]
GO
/****** Object: Table [dbo].[Regestration] Script Date: 12/25/2012 10:39:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Regestration](
[FirstName] [varchar](50) NULL,
[LastName] [varchar](50) NULL,
[UserName] [varchar](50) NULL,
[Password] [varchar](50) NULL,
[EmailId] [varchar](50) NULL,
[Address] [varchar](50) NULL,
[Gender] [varchar](50) NULL,
[ConfirmPassword] [varchar](50) NULL,
[RegistrationID] [int] NOT NULL,
[RegisID] [int] IDENTITY(1,1) NOT NULL,
PRIMARY KEY CLUSTERED
(
[RegistrationID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
UNIQUE NONCLUSTERED
(
[RegisID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
Error:
I have a C# ASP.NET page that submits back to itself to insert details
from a form into a database table. When / if the user refreshes the
page (and gets the standard warning that POST data will be
resubmitted), the previously submitted record is sumbitted again, and a
duplicate record is inserted into the table.
Akkiraju IvaturiPosted Dec 25, 2012, 12:36 AM
1. Redirect the page to another page.
Page.Response.Redirect("~/List.aspx");
2. Or you can disable the button once submitted so that user cannot refresh the page again.
3. You can validate the insertion in the database whether that user already exists or not. So, if you are submitting for the second time (refreshing) then check if user already exists then do not insert data into the table. Modify the stored procedure with condition to check for unique data.