如何在提交按钮单击时自动生成凭证代码

时间:2014-02-14 14:30:54

标签: c# asp.net

这基本上是我想要做的:

我在asp.net中有一个Web表单,它有一个名字和姓氏以及一个提交按钮,

现在点击提交按钮,我想显示一个自动生成的优惠券代码!

我应该怎么做呢?

这就是我在.cs文件中的内容:

 namespace WebApplication1
{
    public partial class DetailsForm : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }``

        [WebMethod]
        public static string InsertMethod(string firstname, string lastname)
        {
            SqlConnection con = new SqlConnection(@"Data Source=KIMBERLY\SQLSERVER02;Initial Catalog=Chalegh;User ID=***;Password=***");
            SqlCommand cmd = new SqlCommand("insert into TestTable values('"+ firstname +"','" + lastname +"')", con);
            con.Open();
            cmd.ExecuteNonQuery();
            return "True";
        }

        public static string GenerateVoucher(int length)
        {
            char[] CharArr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
            string randomString = string.Empty;
            Random objRandom = new Random();
            return randomString;


        }  
    }
}

2 个答案:

答案 0 :(得分:1)

您可以使用GUID.NewGuid()获取唯一ID值。

试试这个:

String randomString = Guid.NewGuid().ToString("N");

建议1:您的INSERT INTO声明向sql injection attacks开放,因此我建议您使用Parameterised Queries来避免这些声明。

建议2:您需要通过检查其返回值来确定ExecuteNonQuery()方法的执行状态。 ExecuteNonQuery()返回数据库中更新的总行数。

试试这个:

 using(SqlConnection con = new SqlConnection(@"Data Source=KIMBERLY\SQLSERVER02;Initial     Catalog=Chalegh;User ID=***;Password=***"))
 {
   using(SqlCommand cmd = new SqlCommand("insert into TestTable values(@firstname,@lastname)", con))
   {
     con.Open();
     int status = cmd.ExecuteNonQuery();
     if(status>0)
        return "True";

        return "False";
    }
  }

答案 1 :(得分:1)

你需要做几件事:

我将创建一个快速列表,(我假设你使用的是Visual Studio)

1)创建一个按钮,以submit按钮更改您的更改(将按钮拖到网页上

2)为您的按钮创建一个事件处理程序(双击您的按钮

3)编写处理程序的代码

  • 在数据库中创建条目
  • 生成优惠券编号
  • 将其显示回屏幕

您的数据库部分非常接近,就像评论建议您要使用参数一样。

using (var con =new SqlConnection(yourConnectionString))
{
    SqlCommand cmd = new SqlCommand("insert into TestTable values('@firstName', '@lastName')", con);
    SqlParameter paramFirstName= new SqlParameter();
    paramFirstName.ParameterName = "@firstName";
    paramFirstName.Value         = firstName;

    SqlParameter paramLastName= new SqlParameter();
    paramLastName.ParameterName = "@lastName";
    paramLastName.Value         = lastName;

    cmd.Parameters.Add(paramFirstName);
    cmd.Parameters.Add(paramLastName);
    con.Open();
    cmd.ExecuteNonQuery();
}

为了生成优惠券号码,我喜欢Sudhakar Tillapudi的回答

String randomString = Guid.NewGuid().ToString("N").Substring(0, 6);

然后你需要将它显示在屏幕上。

  • 在您的网络表单上创建一个标签(EG:lblVoucherNumber)
  • 将文本值分配给标签

lblVoucherNumber.Text = randomString;

请注意,目前您没有保存优惠券号码。您可能希望在某个地方保存该凭证号码(例如在您的TestTable中,请在将其投入生产时将其重命名