我有asp.net自动生成的以下控制器
// // POST: /Account/LogOff [HttpPost] [ValidateAntiForgeryToken] public ActionResult LogOff() { AuthenticationManager.SignOut(); return RedirectToAction("Index", "Home"); }
现在我有一个注销按钮.目前它看起来像这样:
但它不起作用,我猜它是因为它是一个Post动作方法.
我怎么去"退出"?
[编辑]
为什么它会自动生成为Http Post?这样更安全吗?它在注销时是否不随身携带cookie?
我怎么去"退出"?
通过使用表单而不是锚点:
<li> @using (Html.BeginForm("LogOff", "Account")) { @Html.AntiForgeryToken() <button type="submit">Logout</button> } </li>
如果你愿意的话,你可以调用CSS向导来设置这个按钮的样式.但在这种情况下,语义上正确的元素是一个html表单,它允许您发送POST动词.
这没有令人信服的理由HttpPost
.我知道它是以这种方式生成的,但你实际上并没有POST
任何数据.只需删除该属性,它就会按原样运行.
现在,如果你想让它与它一起使用HttpPost
那么你需要将它包装成Form
一个submit
按钮或 submit
表格onclick
.
<li> @using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "LogOffForm" })) { @Html.AntiForgeryToken() <a href="@Url.Action("LogOff", "Account")" onclick="$('#LogOffForm').submit();">Logout</a> } </li>