【问题标题】:I cannot pass a primary key value from one form to other form in asp.net我无法将主键值从一种形式传递到 asp.net 中的另一种形式
【发布时间】:2016-07-31 12:10:09
【问题描述】:

我无法将主键值从一个表单传递到另一个表单,并且我没有使用 gridview

protected void btnRegister_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(conString);

    SqlCommand cmd = new SqlCommand("SP_INSERT_DriverRegistration", con);
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("@DriverReg_id", HF_Reg_Id.Value);
    cmd.Parameters.Add("@Fname", Fname.Text);
    cmd.Parameters.Add("@Lname", Lname.Text);
    cmd.Parameters.Add("@Email", Email1.Text);
    cmd.Parameters.Add("@Password", Password.Text);
    cmd.Parameters.Add("@Gender", Gender.Text);
    cmd.Parameters.Add("@Mobile", Mobile.Text);
    cmd.Parameters.Add("@CNIC", CNIC.Text);
    cmd.Parameters.Add("@Address", Address.Text);
    cmd.Parameters.Add("@DrivingExperience", DrivingExperience.Text);
    cmd.Parameters.Add("@license", license.Text);
    cmd.Parameters.Add("@Route", ddlRoute.SelectedItem.Text);

    con.Open();
    string result = cmd.ExecuteNonQuery().ToString();
    con.Close();

    string id = HF_Reg_Id.Value.ToString();
    Response.Redirect("VanRegister.aspx?id= "+id);
}

我有 2 张桌子 DriverRegistrationVanRegistration。当司机填写司机登记表并提交时,货车登记表将打开,VanRegistration 表中DriverReg_id 将插入。这就是为什么我想通过查询字符串传递DriverReg_id

DriverRegistration表的存储过程

ALTER PROC [dbo].[SP_INSERT_DriverRegistration] 
    @DriverReg_id as int,
    @Fname varchar(50), 
    @Lname varchar(50), 
    @Email varchar(50), 
    @Password varchar(50), 
    @Gender varchar(50), 
    @Mobile varchar(50), 
    @CNIC varchar(50), 
    @Address varchar(50), 
    @DrivingExperience varchar(50),
    @license varchar(50), 
    @Route varchar(50)
AS BEGIN 
    IF @DriverReg_id = -1 --FOR INSERTION IF CONDITION TRUE 
       IF EXISTS(SELECT TOP 1 DriverReg_id 
                 FROM DriverRegistration 
                 WHERE Fname = @Fname AND Mobile = @Mobile)     
       BEGIN
           SELECT -1    
       END
       ELSE BEGIN
          INSERT INTO DriverRegistration(Fname, Lname, Email, Password, Gender, Mobile, CNIC, Address, DrivingExperience, license, Route, CreatedOn, CreatedBy, UpdatedBy, UpdatedOn, IsActive, IsVerified)         
          VALUES(@Fname, @Lname, @Email, @Password, @Gender, @Mobile, @CNIC, @Address, @DrivingExperience, @license, @Route, GETDATE(), 1, null, null, 1, 0)

          SELECT SCOPE_IDENTITY()   
       END
    END
    ELSE BEGIN 
        UPDATE DriverRegistration 
        SET Fname = @Fname, Lname = @Lname, Email = @Email,
            Password = @Password, Gender = @Gender,
            Mobile = @Mobile, CNIC = @CNIC,
            Address = @Address, DrivingExperience = @DrivingExperience,
            license = @license, Route = @Route,
            UpdatedOn = GETDATE(), UpdatedBy = 1
        WHERE 
            DriverReg_id = @DriverReg_id 
    END
END

【问题讨论】:

  • 我想在货车注册页面中传递 id public partial class VanRegister : System.Web.UI.Page { string conString = System.Configuration.ConfigurationManager.ConnectionStrings["myConstring"].ToString(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString.Count > 0) { HF_Reg_Id.Value = Request.QueryString["Id"].ToString(); // HF_DriverReg_id.Value = Request.QueryString["DriverReg_id"].ToString();}}}
  • 请注意,SP_ 前缀用于指定系统存储的过程,应避免在应用程序过程中使用 (msdn.microsoft.com/en-us/library/ms187926.aspx)。使用不同的前缀(或根本不使用)并遵循模式限定对象的最佳实践以最大限度地提高性能。
  • 这里有一个不完整的问题。您没有足够具体地描述该行为。你只是说你“不能通过”。重定向是否发生? URL 看起来是否正确?接收页面上的哪些代码负责从查询字符串中检索 ID?
  • @mason 我想重定向 Van 表单,其中一列是 DriverReg_id 但它在 Van 表单的 DriverReg_id 中插入 -1
  • 您仍然没有完整的问题。重读我之前的评论。显示HF_Reg_Id 的位置并解释为什么您认为它应该具有价值。

标签: c# asp.net sql-server stored-procedures asp.net-web-api


【解决方案1】:

我认为,您使用 Session["ID"]=HF_Reg_Id.Value.ToString(); 并重定向到 VanRegister.aspx 然后检查 if(Session["ID"]!=null) 继续。祝你好运。

【讨论】:

  • 会话["ID"] = HF_Reg_Id.Value.ToString(); Response.Redirect("VanRegister.aspx?id= " + ID);
  • 会话["ID"] = HF_Reg_Id.Value.ToString(); Response.Redirect("VanRegister.aspx");后面的代码 PageLoad "VanRegister.aspx" - if(Session["ID"]!=null) {...}
  • 会话不适合这个。传递 ID 对于此客户端-服务器交互是唯一的,而不是会话的属性。通过 URL 传递它更有意义。如果客户端一次在网站上打开多个选项卡/窗口,则通过会话传递它可能会导致意外行为。
猜你喜欢
  • 2015-06-23
  • 2015-06-06
  • 2011-10-08
  • 2012-03-11
  • 1970-01-01
相关资源
最近更新 更多