Как получить временные данные на страницах макета в Asp. net основных страницах razor - PullRequest
0 голосов
/ 12 июля 2020

Я разрабатываю веб-сайт на Asp. net страницах razor ядра 3.0, Мой веб-сайт имеет страницу макета. Я храню некоторые данные, такие как имя пользователя, имя роли в TempData в классе модели страницы входа, например

     [TempData]
     public int FormRoleId{ get; set; }

     [TempData]
     public int FormUserId { get; set; }

    [TempData]
    public string FormUserName { get; set; }

     public IActionResult OnPost()
    {
        if (string.IsNullOrEmpty(eUserName.Trim()))
        {
            ModelState.AddModelError("UserName", "User Name is a required field.");
            return Page();
        }
        if (string.IsNullOrEmpty(ePassword.Trim()))
        {
            ModelState.AddModelError("Password", "User Name is a required field.");
            return Page();
        }

        var userresult = from usr in _context.TblAllUserDetails
                         where usr.UserName == eUserName.Trim() && usr.Password == ePassword.Trim() && usr.IsDeleted != true
                         select usr;

        if (userresult != null && userresult.ToList().Count > 0)
        {
            int rolid = 0;
            foreach (var item in userresult)
            {
                rolid = item.RoleId;
                FormRoleId = item.RoleId;
                FormUserId = item.UserId;
                FormUserName = item.UserName;
                FormEmailId = item.EmailId;
                TempData.Keep();
            }

            if(rolid == 1)
            {
                return RedirectToPage("./Admin/Dashboard");
            }
            else if (rolid == 2) //Main User
            {
                return RedirectToPage("./Agency/Dashboard");
            }                
        }

Как получить эти значения tempdata на страницах _layout в общей папке. Я использую @ Model.FormUserName на странице _layout, давая исключение, подобное этому исключению RuntimeBinderException: 'LEMS_Demo.Pages.Admin.DashboardModel' не содержит определения для 'FormUserName'

1 Ответ

1 голос
/ 13 июля 2020

я использую @ Model.FormUserName на странице _layout, что дает исключение, подобное этому исключению RuntimeBinderException: 'LEMS_Demo.Pages.Admin.DashboardModel' не содержит определения для 'FormUserName'

Поскольку DashboardModel не содержит свойства FormUserName, оно будет отображать исключение выше.

Чтобы получить значения TempData, вы можете использовать следующий код:

        @{
            if (TempData["FormUserName"] != null)
            {
                <h3>Message: @TempData["FormUserName"]</h3>
                TempData.Peek("FormUserName");
            }
         }

Более подробная информация об использовании TempData , проверьте следующие ссылки:

Управление сеансом и состоянием в ASP. NET Core

TempData In Razor Pages

...