注销按钮不起作用

时间:2016-08-13 10:39:27

标签: c# asp.net asp.net-mvc-4

我有一个注销按钮,当我尝试在我的应用程序上单击注销时显示此消息,这是我收到的消息

  

参数字典包含参数' id'的空条目。的   非可空类型&System; Int32'方法   ' System.Web.Mvc.ActionResult LogOff(Int32)'在   ' Web_Site_Portal.Controllers.AccountController&#39 ;.可选的   参数必须是引用类型,可空类型或声明为   一个可选参数。参数名称:参数

这是我的代码

<a class="btn btn-primary btn-raised" @Html.ActionLink("Logout", "LogOff", "Account", routeValues: null, htmlAttributes: new { id = "logOff" })<div class="ripple-container"></div></a>

控制器

// POST: /Account/LogOff
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult LogOff()
        {
            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
            return RedirectToAction("Index", "Home");
        }

        //
        // POST: /Account/LogOff
        [HttpGet]
        public ActionResult LogOff(int id)
        {
            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
            return RedirectToAction("Index", "Home");
        }

1 个答案:

答案 0 :(得分:4)

您的int行动中有一个LogOff参数似乎是错误的。您不需要此参数,因为您正在注销当前登录的用户。我看到你的LogOff链接有一个id路由参数,这是一个字符串。这是为什么?如果需要,您必须将LogOff操作的参数类型更改为字符串。

修改

你有两个动作做同样的事情。如果您希望LogOff操作同时使用GETPOST方法,请从操作中删除[HttpGet][HttpPost]。所有你需要的是:

public ActionResult LogOff()
{
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
            return RedirectToAction("Index", "Home");
}