Send the list (asp-items) to the session, asp.net

107 Views Asked by At

I´m trying to change the selection that the user sees based on the user role. Example: if the user is admin let the selection be: admin, system ,....

I first created this:

public List<SelectListItem> Selection { get; set; }

then:

public IActionResult Recht()
{
    if (UserModel.RECHT.Equals(50))
    {
        Selection.Add(new SelectListItem { Value = "SY", Text = "System" });
        Selection.Add(new SelectListItem { Value = "AD", Text = "Admin" });
        Selection.Add(new SelectListItem { Value = "ID", Text = "Innendienst" });
        Selection.Add(new SelectListItem { Value = "SP", Text = "Spediteur" });
        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
      


    }
    if (UserModel.RECHT.Equals(40))
    {
        Selection.Add(new SelectListItem { Value = "AD", Text = "Admin" });
        Selection.Add(new SelectListItem { Value = "ID", Text = "Innendienst" });
        Selection.Add(new SelectListItem { Value = "SP", Text = "Spediteur" });
        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
    }
    if (UserModel.RECHT.Equals(30))
    {
        Selection.Add(new SelectListItem { Value = "ID", Text = "Innendienst" });
        Selection.Add(new SelectListItem { Value = "SP", Text = "Spediteur" });
        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
    }
    if (UserModel.RECHT.Equals(20))
    {

        Selection.Add(new SelectListItem { Value = "SP", Text = "Spediteur" });
        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
    }
    if (UserModel.RECHT.Equals(10))
    {

        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
        UserRoleMessage = string.Join(",", Selection);
        HttpContext.Session.SetString("UserRoleMessage", UserRoleMessage);
    }
    

    UserRoleMessage = Convert.ToString(UserModel.RECHT);
    HttpContext.Session.SetString("UserRoleMessage", UserRoleMessage);


    return Page();


}

When I run my code I still get an empty selection.

1

There are 1 best solutions below

0
Yiyi You On

If you want to set Selection when page load,you can call Recht in OnGet:

public void OnGet()
        {
            Recht();
        }

If you want to use a form to pass UserModel.RECHT to handler,and change the value of Selection,here is a demo:

form:

<form method="get" asp-page-handler="Recht">
    <input asp-for="UserModel.RECHT" />
    <input type="submit" value="submit"/>
</form>

handler:

[BindProperty]
public UserModel UserModel{get;set;}
public IActionResult OnGetRecht()
{
    if (UserModel.RECHT.Equals(50))
    {
        Selection.Add(new SelectListItem { Value = "SY", Text = "System" });
        Selection.Add(new SelectListItem { Value = "AD", Text = "Admin" });
        Selection.Add(new SelectListItem { Value = "ID", Text = "Innendienst" });
        Selection.Add(new SelectListItem { Value = "SP", Text = "Spediteur" });
        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
      


    }
    if (UserModel.RECHT.Equals(40))
    {
        Selection.Add(new SelectListItem { Value = "AD", Text = "Admin" });
        Selection.Add(new SelectListItem { Value = "ID", Text = "Innendienst" });
        Selection.Add(new SelectListItem { Value = "SP", Text = "Spediteur" });
        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
    }
    if (UserModel.RECHT.Equals(30))
    {
        Selection.Add(new SelectListItem { Value = "ID", Text = "Innendienst" });
        Selection.Add(new SelectListItem { Value = "SP", Text = "Spediteur" });
        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
    }
    if (UserModel.RECHT.Equals(20))
    {

        Selection.Add(new SelectListItem { Value = "SP", Text = "Spediteur" });
        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
    }
    if (UserModel.RECHT.Equals(10))
    {

        Selection.Add(new SelectListItem { Value = "DS", Text = "Disponent" });
        UserRoleMessage = string.Join(",", Selection);
        HttpContext.Session.SetString("UserRoleMessage", UserRoleMessage);
    }
    

    UserRoleMessage = Convert.ToString(UserModel.RECHT);
    HttpContext.Session.SetString("UserRoleMessage", UserRoleMessage);


    return Page();


}