Asp.net mvc 3 总是看到“我的眼睛”;“登录菜单”;

Asp.net mvc 3 总是看到“我的眼睛”;“登录菜单”;,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我最近问了一个关于razor语法的问题,为什么一堆代码不起作用,现在我又问了一个关于同一段代码的新问题: @if(Request.LogonUserIdentity.IsAuthenticated){ <ul id="menu"> <li>@Html.ActionLink("Location", "Index", "Location")</li> <l

我最近问了一个关于razor语法的问题,为什么一堆代码不起作用,现在我又问了一个关于同一段代码的新问题:

        @if(Request.LogonUserIdentity.IsAuthenticated){
            <ul id="menu">
                <li>@Html.ActionLink("Location", "Index", "Location")</li>
                <li>@Html.ActionLink("Service", "Index", "Service")</li>
                <li>@Html.ActionLink("Service Assignment", "Index", "ServiceAssignment")</li>
                <li>@Html.ActionLink("Content Management", "Index", "Content")</li>
            </ul>                
        }else{
           <ul id="menu">
                <li>@Html.ActionLink("Location", "Index", "Location")</li>
                <li>@Html.ActionLink("Map", "Map", "Home")</li>
                <li>@Html.ActionLink("Help", "Help", "Home")</li>
            </ul>
        }
@if(Request.LogonUserIdentity.IsAuthenticated){
  • @ActionLink(“位置”、“索引”、“位置”)
  • @ActionLink(“服务”、“索引”、“服务”)
  • @ActionLink(“服务分配”、“索引”、“服务分配”)
  • @ActionLink(“内容管理”、“索引”、“内容”)
}否则{
  • @ActionLink(“位置”、“索引”、“位置”)
  • @ActionLink(“地图”、“地图”、“主页”)
  • @ActionLink(“帮助”、“帮助”、“主页”)
}
我这次的问题是:

为什么如果我登录或退出,我只看到菜单,而您只应该看到您是否登录

也就是说,无论我是否登录,我都会看到authenticated users菜单。控制器中是否有我需要更新的内容

根据,
请求。LogonUserIdentity.IsAuthenticated

获取当前用户的WindowsIdentity类型

您很可能正在使用FormsAuthentication,并且希望使用()
Request.IsAuthenticated

获取一个值,该值指示请求是否已通过身份验证

编辑

我查看了用于执行此逻辑的代码,并使用
HttpContext.User.Identity.IsAuthenticated
()方法来执行这种类型的分支,而不是请求属性。也许这就是你的问题所在

@if(HttpContext.Current.User.Identity.IsAuthenticated){...}

从技术上讲,这不是同一段代码。回答者改变了你的逻辑。那不起作用。我仍然可以看到“我已登录”菜单。这个例子在一个方法中显示了它,这是基于控制器的吗?很抱歉,我对所有这些都不熟悉。谢谢,我尝试了这个方法,但我一直收到错误:
非静态字段、方法或属性'System.Web.HttpContext.User.get'
需要对象引用,所以我尝试@using
System.Web.HttpContext.User
User.get
无效。User.get来自哪里?HttpContext.User.Identity.IsAuthenticated是您应该使用的…我正在执行
@if(HttpContext.User.Identity.IsAuthenticated){}
,它在HttpContext和User下有一个红色的波形。因此出现了错误消息。@TheWebs-很抱歉,在视图中,您需要使用HttpContext.Current.User.Identity.IsAuthenticated