将多个id从第一个aspx页面存储到下一个aspx页面

时间:2010-06-17 20:46:45

标签: vb.net session asp.net

我的第一个aspx页面包含用户填写的数据。它采用文本框格式,最后用户点击提交,所有数据都在数据库中。在数据库中,每条记录都有一个ID字段。现在,当用户点击提交并转到下一页时,我想从他刚刚插入的数据库中获取ID(可能是1到1000+),并在第二页上提供它们。如何从第1页到第2页获取所有ID?我可以在会议中这样做吗?或者是其他东西。请提供一些示例代码,以便我能更好地理解。

2 个答案:

答案 0 :(得分:0)

可以做到,而且不是那么难。简而言之,这就是你想要做的事情:

  • 对于您插入数据库的每个项目,返回新创建的项目的ID
  • 将保存项目的id存储在数据库方法的某个地方,方便访问 - Session是个好地方。
  • 在下一页上,您可以访问Session变量以检索您保存的ID。

(目前正在编辑帖子以添加代码)

返回新插入的ID的最佳和最安全的方法是通过事务处理(另外,如果插入有问题,您可以将其回滚)。以下是我们执行插入并返回ID的事务的外观:

ALTER PROCEDURE [dbo].[storeFrontItems]
    @itemName NVARCHAR(255),                    
    @itemDescription NVARCHAR(255),

    @newItemID INT OUTPUT
AS

    BEGIN TRANSACTION   
    INSERT INTO storeFrontItems (Name, Description) VALUES (@itemName, @itemDescription)
    SET @error = @@ERROR
    IF @error <> 0
     BEGIN
      ROLLBACK TRANSACTION
      RETURN @error
     END
    ELSE
     BEGIN
      SELECT @newItemID = @@IDENTITY
     END 
     COMMIT TRANSACTION


    RETURN

然后,您可以将新ID存储在会话变量

  Dim newlyCreatedItemID int
  newlyCreatedItemID = databaseInsertNewItem /* ... */

  /* to store it in a session variable */
  Session("NewItemID") = newlyCreatedItemID

  /* to retrieve it from a session variable */
  newlyCreatedItemID = i = CType(Session("NewItemID"), newlyCreatedItemID )

答案 1 :(得分:0)

首先创建某种sessionId并将其存储在会话对象中。

Session["SessionId"] = Guid.NewGuid().ToString();

当存储id时,在db中,还用它记录SessionId(上面),这样你就会知道该会话的所有记录。

然后在下一页中,只需进行查询即可获得与该SessionId相关的所有ID