Asp.net mvc 3 总是看到“我的眼睛”;“登录菜单”;
我最近问了一个关于razor语法的问题,为什么一堆代码不起作用,现在我又问了一个关于同一段代码的新问题: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
@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'
需要对象引用,所以我尝试@usingSystem.Web.HttpContext.User
和User.get
无效。User.get来自哪里?HttpContext.User.Identity.IsAuthenticated是您应该使用的…我正在执行@if(HttpContext.User.Identity.IsAuthenticated){}
,它在HttpContext和User下有一个红色的波形。因此出现了错误消息。@TheWebs-很抱歉,在视图中,您需要使用HttpContext.Current.User.Identity.IsAuthenticated