Zap*_*ica 5 asp.net asp.net-mvc html-helper
我有asp.net自动生成的以下控制器
//
// POST: /Account/LogOff
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个注销按钮.目前它看起来像这样:
<div class="userdrop">
<ul>
<li><a href="@Url.Action("Manage", "Account")">Profile</a></li>
<li><a href="@Url.Action("LogOff", "Account")">Logout</a></li>
</ul>
</div><!--userdrop-->
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我猜它是因为它是一个Post动作方法.
我怎么去"退出"?
[编辑]
为什么它会自动生成为Http Post?这样更安全吗?它在注销时是否不随身携带cookie?
我怎么去"退出"?
通过使用表单而不是锚点:
<li>
@using (Html.BeginForm("LogOff", "Account"))
{
@Html.AntiForgeryToken()
<button type="submit">Logout</button>
}
</li>
Run Code Online (Sandbox Code Playgroud)
如果你愿意的话,你可以调用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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27249 次 |
| 最近记录: |