Как сохранить объект в сеансе, а затем Как вернуть значения путем приведения сеанса в Asp.netCore2.1? - PullRequest
0 голосов
/ 18 марта 2019

как добавить EmployeeId и DesignationId в объекте и этот объект, сохраненный в сеансе при входе в систему и после входа в систему, как получить этот EmployeeId и DesignationId в ядре asp.net 2.1 ?????

Вот мой контроллер входа в систему Код:

DataTable dt = sql.GetDataTable("select * from EmpDetails where EmailId = '" + EmailId + "'");
string strempstatus = dt.Rows[0]["Status"].ToString();
string EmpStatus = strempstatus.TrimEnd();

//Models.UserDetails detail = new Models.UserDetails();

if (EmpStatus == "Verified")
{
    //i want to create object which store below two variable value
    string EmployeeId = dt.Rows[0]["Id"].ToString();
    string DesignationId = dt.Rows[0]["D_Id"].ToString();

    //I want to stored object in below session
    HttpContext.Session.SetString("EmployeeData", EmployeeId);

    HttpContext.Session.SetInt32("EmployeeID", Convert.ToInt32(EmployeeId));
    //For Destroy Session
    //HttpContext.Session.Remove("EmployeeID");

    Int32? Saved = HttpContext.Session.GetInt32("EmployeeID");

    if (DesignationId == "1")
    {
        return RedirectToAction("Index", "AdminDashboard");
    }
    else
    {
        return RedirectToAction("Index", "UserDashboard");
    }
}

1 Ответ

1 голос
/ 18 марта 2019

Чтобы просмотреть и получить переменные сеанса в .NET CORE:

В файле Startup.cs в разделе метода Configure добавьте следующую строку:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSession();
}

И подметод ConfigureServices, добавьте следующую строку:

public void ConfigureServices(IServiceCollection services)
{
  //Added for session state
  services.AddDistributedMemoryCache();

  services.AddSession(options =>
  {
  options.IdleTimeout = TimeSpan.FromMinutes(10);               
  });
}

Чтобы установить строку сеанса:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;

../

HttpContext.Session.SetString("UserID", "Your user ID");

Чтобы получить переменную сеанса (например, на вашей странице бритвы):

@Context.Session.GetString("UserID")

РЕДАКТИРОВАТЬ :

Чтобы сохранить сложные объекты в сеансе в .NET Core, выполните следующие действия:

Создайте класс модели изтип вашего объекта (в вашем случае EmployeeDetails):

public class EmployeeDetails
{
    public string EmployeeId { get; set; }
    public string DesignationId { get; set; }
}

Затем создайте помощник SessionExtension для установки и получения вашего сложного объекта в формате JSON:

public static class SessionExtensions
        {
            public static void SetObjectAsJson(this ISession session, string key, object value)
            {
                session.SetString(key, JsonConvert.SerializeObject(value));
            }

            public static T GetObjectFromJson<T>(this ISession session, string key)
            {
                var value = session.GetString(key);

                return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
            }
        }

Затем, наконец, установите сложный объект вваш сеанс как:

var employee = new EmployeeDetails();
employee.EmployeeId = "1";
employee.DesignationId = "2";

HttpContext.Session.SetObjectAsJson("EmployeeDetails", employee);

Чтобы получить ваш сложный объект в сеансе:

var employeeDetails = HttpContext.Session.GetObjectFromJson<EmployeeDetails>("EmployeeDetails");
int employeeID = Convert.ToInt32(employeeDetails.EmployeeId);
int designationID= Convert.ToInt32(employeeDetails.DesignationId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...