仅在登录 MVC .net 站点时显示 <li> 项

Posted

技术标签:

【中文标题】仅在登录 MVC .net 站点时显示 <li> 项【英文标题】:Only show an <li> item when logged in on MVC .net site 【发布时间】:2017-01-02 00:06:06 【问题描述】:

我有一个 MVC 模板,我有 2 个用户角色,只有具有这些角色的用户才能看到并单击导航栏中的 listItem。但是由于所有角色都可以看到它,所以不向未登录的人显示就足够了。这是我的cshtml

<div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("Roles", "Index", "Roles")</li>
                    <li>@Html.ActionLink("Evaluaties", "About", "Home")</li>
            </ul>
            @Html.Partial("_LoginPartial")
        </div>

所以最后一个 listItem Evaluaties 不应该被未登录的人看到,或者换句话说,只有学生 (Leerling) 和教师 (Begeleider) 这两个角色才能看到。在我的控制器中使用。

public ActionResult About()
    
        if (User.IsInRole("Begeleider"))
        
            var client = new WebClient();
            var jsonLeerlingen = client.DownloadString(new Uri("http://localhost:8080/projecten/api/leerlingen"));
            var leerlingen = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<Leerling>>(jsonLeerlingen);
            var jsonEvaluaties = client.DownloadString(new Uri("http://localhost:8080/projecten/api/evaluaties"));
            var evaluaties = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<Evaluatie>>(jsonEvaluaties);
            ViewBag.Message = leerlingen;
            ViewBag.Evaluaties = evaluaties;

        
        if (User.IsInRole("Leerling"))
        
            var email = User.Identity.GetUserName();
            var client = new WebClient();
            var jsonLeerlingen = client.DownloadString(new Uri("http://localhost:8080/projecten/api/leerlingen"));
            var leerlingen = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<Leerling>>(jsonLeerlingen);
            var jsonEvaluaties = client.DownloadString(new Uri("http://localhost:8080/projecten/api/evaluaties"));
            var evaluaties = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<Evaluatie>>(jsonEvaluaties);
            ViewBag.Message = leerlingen;
            ViewBag.Evaluaties = evaluaties;

        
        return View();
    

我尝试使用if (User.IsInRole("Begeleider")),但我无法在 a.cshtml 页面中使用它

【问题讨论】:

看看_LoginPartial.cshtml,那里已经发生了。 你的意思是像这样@if (Request.IsAuthenticated) 【参考方案1】:

如果您查看_LoginPartial.cshtml 部分视图,您会看到一些实现方式与您尝试执行的方式完全相同。比如:

@if (Request.IsAuthenticated)

    <div>You are logged in</div>

else
   
    <div>You are not logged in</div>

【讨论】:

以上是关于仅在登录 MVC .net 站点时显示 <li> 项的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Blade 仅在未登录时显示

不知何故,某些 css 仅在用户登录时显示 - 而对已注销的用户不显示。 HTML/CSS

css SEO Helper:仅在登录时显示标题的彩色标记:

如何使条款和条件仅在我首次登录 Google 时显示?

@font-face 仅在 www 时显示。不在地址。仅域名,正确显示

仅在 kivy 首次启动时显示设置屏幕