如何将信息从 .net Core 中的 pagemodel cs 文件传回 razor 页面

how to pass information back to a razor page from the pagemodel cs file in .net core

我想隐藏 cshtml 页面的某些部分,具体取决于 user.identity.name。

我有应用程序配置文件,我从中成功检索了用户管理信息:

这里是该代码的 c# 片段

        public IActionResult OnGet()
    {
        string admin = _context.ApplicConfs.Select(s => s.AppAdmin).FirstOrDefault();
        string badmin = _context.ApplicConfs.Select(s => s.BackAdmin).FirstOrDefault();
        ViewBag.uadmin = admin;
        ViewBag.ubadmin = badmin;
        return ViewBag();
    }

cshtml 代码当前执行以下操作:

    @*@if (@User.Identity.Name == (ViewBag.uadmin) ||  @User.Identity.Name == (ViewBag.ubadmin))
{*@

后面是什么 html 显示不显示(有条件)

类似的东西在 .net core MVC 中有效,但在 .net core razor 页面中无效。

如何将上面的管理字符串从 c# pagemodel 页面传递到 cshtml razor 页面,以便可以将当前的@user.identity.name 与管理字符串进行比较?

对不起,如果这是一个愚蠢的问题...

您可以尝试使用ViewData,这里有一个演示:

TestHidden.cshtml.cs:

[BindProperty]
        public User User { get; set; }
        public IActionResult OnGet()
        {
            User= new User { Identity = new Identity { Name = "admin" } };
            ViewData["uadmin"] = "admin";
            ViewData["ubadmin"] = "badmin";
            return Page();
        }

类:

public class User {
        public Identity Identity { get; set; }
    }
    public class Identity
    {
        public string Name { get; set; }
    }

TestHidden.cshtml:

@if (@Model.User.Identity.Name == ViewData["uadmin"] || @Model.User.Identity.Name == ViewData["ubadmin"])
{
    <h1>User.Identity.Name:@Model.User.Identity.Name</h1>
    <h1>ViewData["uadmin"]:@Model.ViewData["uadmin"]</h1>
    <h1>ViewData["ubadmin"]:@Model.ViewData["ubadmin"]</h1>
}

结果: