在使 MVC 4 变得安静的同时,默认模板不允许禁用 JavaScript 的用户退出。这是解决该问题的方法。
注意我还在这里写了关于这个问题的博客:http: //www.shiningtreasures.com/post/2013/08/09/cannot-log-out-of-aspnet-mvc4-without-javascript
@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) {
@Html.AntiForgeryToken()
<a id="logout" href="javascript:document.getElementById('logoutForm').submit()" style="display:none">Log Off</a>
<script>
//<!--
var l = document.getElementById('logout');
if (typeof(l) != 'undefined' && l != null)
l.style.display = "inline";
//-->
</script>
<noscript>
<input type="submit" value="Log Off" />
</noscript>
}
基本上,当 JavaScript 不可用时,它会退回到提交按钮而不是链接。在所有情况下,我们仍然使用 POST。
另一个小问题 - 模板的 CSS 使按钮看起来与链接不同。这是 CSS 对注销按钮样式的修复,因此它看起来与实际上是锚标记的其他“按钮”相同。
/* drop this in just above "info and errors" */
#logoutForm input[type="submit"],
#logoutForm input[type="button"],
#logoutForm button
{
background-color: #d3dce0;
color: #333;
border: none;
border: 0px;
font-size: 1em;
font-weight: 400;
margin: -4px 3px -4px 10px;
padding: 2px 3px;
text-decoration: none;
font-family: inherit;
outline: medium none;
}
/* for mobile styles - you need to drop this one in right after the other
#login styles in the mobile block (near the bottom of the file) */
#login input[type="submit"],
#login input[type="button"],
#login button
{
background: none;
color: #999;
border: none;
border: 0px;
font-size: 1em;
font-weight: 600;
margin: -4px 3px -4px 6px;
padding: 0;
text-decoration: none;
font-family: inherit;
outline: medium none;
}