Как можно использовать некоторый сеанс для нескольких вкладок браузера в ASP.NET Основной MVC

#c# #session #.net-core #asp.net-core-mvc #session-variables

Вопрос:

Я хочу перейти к профилю каждого ученика, а затем выполнить какое-либо действие для каждого использования, например (Редактировать, добавить класс,…).

Получил этот URL /students/profile/1 -адрес для профиля студента.

Я хочу перейти на профили для 3 студентов:

  • Студент 1 /students/profile/1
  • Студент 2 /students/profile/2
  • Студент 3 /students/profile/3

Profile способ действия:

 public IActionResult Profile(long? id)
{
    HttpContext.Session.SetInt32(".ProfileStudent.StudentId", id); // set session

    return View();
}
 

Если мне нужны данные для студента для данного идентификатора в идентификаторе сеанса:

 URL => /students/profile/1

public IActionResult EditInfo()
{
    var id = HttpContext.Session.GetInt32(".ProfileStudent.StudentId");

    var student = db.Student.Find(id);
    return View(student );
}

URL => /students/profile/2

public IActionResult EditInfo()
{
    var id = HttpContext.Session.GetInt32(".ProfileStudent.StudentId");

    var student = db.Student.Find(id);
    return View(student );
}
 

Теперь данные конфликтуют и возвращают сеанс последнего значения.

Как получить сеанс данных для каждого пользователя на вкладке браузера?

Комментарии:

1. сеанс предназначен для каждого пользователя. не для таба. почему вы не используете параметр?

2. Мой пример прост только для объяснения, нужна сессия на вкладке

3. Пожалуйста, прочтите meta.stackexchange.com/questions/66377/what-is-the-xy-problem

Ответ №1:

Я бы настоятельно не советовал хранить и использовать параметры таким образом по нескольким причинам, и открытие нескольких вкладок в любом случае не решит вашу проблему. Просто передайте методу определенный идентификатор в качестве параметра EditInfo , чтобы вы могли использовать несколько вкладок одновременно.

 public IActionResult EditInfo(int id)
{
    var student = db.Student.Find(id);
    return View(student );
}
 

Комментарии:

1. Мой пример прост только для объяснения, нужна сессия для каждой вкладки, которую вы можете видеть, например, в группе Facebook есть какое-то действие, а не каждая вкладка объединена