【问题标题】:Razor Page Layout.cshtml displaying hidden controls when it shouldn'tRazor Page Layout.cshtml 在不应该显示隐藏控件时显示
【发布时间】:2021-06-01 12:10:12
【问题描述】:

我试图隐藏项目,除非用户有权访问该部分/页面。加载初始页面时,所有内容都保持隐藏状态。 Layout.cshtml文件中的控件就是这个逻辑。

@if (Context.Request.Cookies.TryGetValue("CookieValue", out string val10) == true)
{
    <a class="nav-link text-white" style="background-color:seagreen;" asp-page="Home Page">Home</a>
}

但是,当用户登录时,隐藏的项目会显示。在页面加载时也会对相同的值进行相同的 cookie 检查,并且会发生适当的重定向到登录页面。除非存在适当的值,否则如何防止控件被呈现?

【问题讨论】:

    标签: c# asp.net-core .net-core razor


    【解决方案1】:

    这个条件只判断是否有cookieCookieValue,并将值赋给val10。但是你需要添加一个外部条件来过滤合适的值。

    @if (Context.Request.Cookies.TryGetValue("CookieValue", out string val10) == true)
    {
          @if (val10 == "value")
           {
               <a class="nav-link text-white" style="background-color:seagreen;" asp-page="Home Page">Home</a>
           }
    }
    

    【讨论】:

    • 是的,这行得通。但是,最初加载页面时(layout.cshtml 控件最初是隐藏的)它是如何工作的呢?
    • 还有,有没有更清洁/更好的方法呢?
    • @jnelson,如果你使用return View(),它不会渲染视图。因此,最初加载页面时控件将被隐藏。使用登录时必须使用return Redirect()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多