【问题标题】:How to retrieve Temp Data in layout pages in Asp.net core razor pages如何在 Asp.net 核心剃须刀页面的布局页面中检索临时数据
【发布时间】:2020-07-12 02:23:59
【问题描述】:

我正在用 Asp.net core 3.0 razor pages 开发网站,我的网站有一个布局页面。 我在登录页面模型类中的 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");
            }                
        }

如何在共享文件夹的 _layout 页面中获取这些临时数据值。 我在_layout页面中使用@Model.FormUserName,给出这样的异常 RuntimeBinderException:“LEMS_Demo.Pages.Admin.DashboardModel”不包含“FormUserName”的定义

【问题讨论】:

    标签: asp.net-core razor-pages


    【解决方案1】:

    我在 _layout 页面中使用@Model.FormUserName,给出异常 这个 RuntimeBinderException: 'LEMS_Demo.Pages.Admin.DashboardModel' 不包含“FormUserName”的定义

    由于 DashboardModel 不包含 FormUserName 属性,它会显示上面的异常。

    要获取 TempData 值,您可以使用以下代码:

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

    有关使用 TempData 的更多详细信息,请查看以下链接:

    Session and state management in ASP.NET Core

    TempData In Razor Pages

    【讨论】:

      猜你喜欢
      • 2020-12-08
      • 2021-01-05
      • 2018-11-28
      • 2019-06-13
      • 2020-11-09
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2019-01-19
      相关资源
      最近更新 更多