хранить несколько идентификаторов от первой страницы aspx до следующей страницы aspx - PullRequest
0 голосов
/ 18 июня 2010

У меня есть моя первая страница aspx, в которой есть данные, которые пользователь заполняет. Она имеет формат текстового поля, и в конце все пользователи нажимают кнопку «Отправить», и все данные отправляются в базу данных. В базе данных каждая запись получает поле идентификатора. Теперь, когда пользователь нажимает кнопку «Отправить» и переходит на следующую страницу, я хочу получить идентификаторы (они могут быть от 1 до 1000+) из только что вставленной им БД и разместить их на второй странице. Как я могу взять все идентификаторы со страницы 1 на страницу 2? Могу ли я сделать это в сессии? или что-то другое. Пожалуйста, поместите пример кода, чтобы я мог лучше понять.

Ответы [ 2 ]

0 голосов
/ 18 июня 2010

Сначала создайте своего рода идентификатор сеанса и сохраните его в объекте сеанса.

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

При сохранении идентификаторов в БД также запишите с ним SessionId (выше), чтобы вы знали все записи для этого сеанса.

Затем на следующей странице просто выполните запрос, чтобы получить все идентификаторы, связанные с этим SessionId

0 голосов
/ 18 июня 2010

Это можно сделать, и это не так сложно. Вкратце, вот что вы хотите сделать:

  • для каждого элемента, который вы вставляете в базу данных, возвращает идентификатор вновь созданного элемента
  • храните идентификатор сохраненного элемента в ваших методах базы данных в удобном месте - сессия - хорошее место.
  • на следующей странице вы можете получить доступ к переменной Session, чтобы получить сохраненные вами идентификаторы.

(В настоящее время редактирование сообщения для добавления кода)

Лучший и самый безопасный способ вернуть вновь вставленные идентификаторы - это транзакции (плюс, если есть проблема со вставкой, вы можете откатить ее). Вот как будет выглядеть транзакция, когда мы делаем вставку и возвращаем идентификатор:

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

Затем вы можете сохранить свой новый идентификатор в переменной сеанса

  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 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...