Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html ASP.NET MVC-nav中带有身份验证的注册表菜单项_Html_Asp.net Mvc_Http Post_Html.actionlink - Fatal编程技术网

Html ASP.NET MVC-nav中带有身份验证的注册表菜单项

Html ASP.NET MVC-nav中带有身份验证的注册表菜单项,html,asp.net-mvc,http-post,html.actionlink,Html,Asp.net Mvc,Http Post,Html.actionlink,我是MVC世界的新手。我的布局文件中有一个nav,供登录用户使用: <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("Home", "Index", "Member")</li> <li>@Html.ActionLink("

我是MVC世界的新手。我的布局文件中有一个
nav
,供登录用户使用:

<div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                <li>@Html.ActionLink("Home", "Index", "Member")</li>
                <li>@Html.ActionLink("My Profile", "MyProfile", "Member")</li>
                <!-- User type Admin, then Admin Menu -->
                <li>@Html.ActionLink("Admin Index", "AdminIndex", "Member")</li>
                <li>@Html.ActionLink("About", "About", "Home")</li>

                <!-- Throws error /User/Logout not found -->
                <li>@Html.ActionLink("Logout", "Logout", "User")</li>

                <!-- Works Perfectly fine, but the link is on new line & different font/color/underlined -->
                @if (Request.IsAuthenticated)
                {
                    using (Html.BeginForm("Logout", "User", FormMethod.Post, new { id = "logoutForm" }))
                    {
                        <li><a href="javascript:document.getElementById('logoutForm').submit()">Logout</a></li>
                    }
                }
            </ul>
        </div>
谁能帮我完成这项工作!!非常感谢您的帮助


谢谢

我怀疑,尽管很难说,控制器不是UserController,而是AccountController(默认)或MemberController

在这种情况下,电话应该是

 @Html.ActionLink("Logout", "Logout", "Account") 


在您的额外编辑之后,我认为问题在于注销是一个帖子,链接只是一个Get请求,所以Mvc正在寻找一个Get操作/用户/注销。这里有一个关于如何将链接转换为帖子的答案

我可能会让您的链接在一些js代码中调用ajax命令。为了充分利用剃须刀的优点,您可以使用@Url.Action。按如下方式修改代码

您的导航将如下所示

<div class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
            <li>@Html.ActionLink("Home", "Index", "Member")</li>
            <li>@Html.ActionLink("My Profile", "MyProfile", "Member")</li>
            <!-- User type Admin, then Admin Menu -->
            <li>@Html.ActionLink("Admin Index", "AdminIndex", "Member")</li>
            <li>@Html.ActionLink("About", "About", "Home")</li>

            <li><a href=# onclick="LogOut()">Log Out</a></li>

                }
            }
        </ul>
</div>

  • @ActionLink(“主页”、“索引”、“成员”)
  • @ActionLink(“我的个人资料”、“我的个人资料”、“成员”)
  • @ActionLink(“管理员索引”、“管理员索引”、“成员”)
  • @ActionLink(“关于”、“关于”、“主页”)
  • } }
然后,您的javascript函数需要位于导航页面可以访问的地方(您的_布局页面的底部可能是最简单的)


函数注销(){
$.ajax({
类型:“POST”,
url:@url.Action(“注销”、“用户”)“
});
}

希望这是有意义的,我还没有测试它,但你的链接现在应该像所有其他链接一样,你的控制器现在将获得一个POST请求,因此将访问你的注销方法。出现任何问题。

使用
@Html.ActionLink(“注销”、“注销”、“用户”)会出现什么错误
link?如果您在UserController中发布了注销操作中的代码,这也会很有帮助。此外,您还可以有条件地检查某人是否在_布局中担任角色。我猜您的角色实现中有错误。如果您的角色实现没有错误,您可以简单地执行
if(User.IsInRole(“admin”){//show link}
请不要同时问多个问题。对于第一个问题,请解释为什么它不起作用,否则我们根本帮不了你。@DavidG和peggy删除了第二个问题。也共享了错误。我假设代码应该是
Html.BeginForm(“注销”,“帐户”…
取而代之的是?@DavidG,第二段操作名称是“注销”,控制器名称是“用户”。为什么是“帐户”在action name???中,该操作在UserController中处理,而不是在Account或Member Controller中处理。注册、登录、注销所有此类操作都在UserController中处理。布局文件-这是一个MembersLayout文件,由登录用户的文件使用。例如/Member/Index使用MembersLayout,它具有上述注销问题。请说明更多详细信息我应该提供帮助您解决问题的AIL。您能详细说明或在示例中展示真实的代码吗?因为我在js和/或ajax方面很差。我看到了您的ajax代码,但如何通过我的
  • Html.ActionLink(“注销”、“注销”、“用户”)来调用它
  • 代码行???我的意图是,它们看起来都一样,在同一行中。Html.ActionLink&a看起来不同,href出现在新的行中。@Tvd没有问题,当我到达我的机器时,我会详细说明。是的,链接看起来像其他链接;但不幸的是,点击事件根本没有任何操作。我已经复制了你的代码,确保它们的正确性不是键入错误。但是他们对链接单击事件没有任何操作。@Tvd我想是我输入了错误。js命令是LogOut(),但在链接中,我现在更改了LogOut()。
    @Html.ActionLink("Logout", "Logout", "Member")
    
    <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                <li>@Html.ActionLink("Home", "Index", "Member")</li>
                <li>@Html.ActionLink("My Profile", "MyProfile", "Member")</li>
                <!-- User type Admin, then Admin Menu -->
                <li>@Html.ActionLink("Admin Index", "AdminIndex", "Member")</li>
                <li>@Html.ActionLink("About", "About", "Home")</li>
    
                <li><a href=# onclick="LogOut()">Log Out</a></li>
    
                    }
                }
            </ul>
    </div>
    
    <script type="text/javascript">
       function LogOut() {
          $.ajax({
               type: "POST",
               url: "@Url.Action("Logout", "User")"
           });
       }
    </script>