我有一个注销按钮,当我尝试在我的应用程序上单击注销时显示此消息,这是我收到的消息
参数字典包含参数' 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");
}
答案 0 :(得分:4)
您的int
行动中有一个LogOff
参数似乎是错误的。您不需要此参数,因为您正在注销当前登录的用户。我看到你的LogOff链接有一个id
路由参数,这是一个字符串。这是为什么?如果需要,您必须将LogOff
操作的参数类型更改为字符串。
修改强>
你有两个动作做同样的事情。如果您希望LogOff操作同时使用GET
和POST
方法,请从操作中删除[HttpGet]
和[HttpPost]
。所有你需要的是:
public ActionResult LogOff()
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
return RedirectToAction("Index", "Home");
}