以下代码段导致编译错误,我无法查明。我试着从最后一个支架上取下2。我没有用括号试过AntiForgery - 没有运气。
错误是CS1501:方法'Write'没有重载需要0个参数
有什么建议吗?
<div id="header-wrapper">
<div id="header">
<div id="menu-wrapper">
@if (Page.User.Identity.IsAuthenticated){
@Html.Telerik().Menu().Name("mainnav").BindTo("main").Effects(x => x.Toggle())
}
</div>
@if (Page.User.Identity.IsAuthenticated){
<form action="@Url.Action("Logoff", "Account")" id="formLogout" method="POST">
@{ Html.AntiForgeryToken(); }
<a href="" id="logout" onclick="$('#formLogout').submit();return false;"></a>
</form>
@}
<div id="subnav"></div>
</div>
</div>
答案 0 :(得分:1)
尝试更换:
@{ Html.AntiForgeryToken(); }
使用:
@Html.AntiForgeryToken()
(并从@
右括号中删除if
代码应该是:
@if (Page.User.Identity.IsAuthenticated) {
<form action="@Url.Action("Logoff", "Account")" id="formLogout" method="POST">
@Html.AntiForgeryToken()
<a href="" id="logout" onclick="$('#formLogout').submit();return false;"></a>
</form>
}
答案 1 :(得分:1)
由于Chris回答了您的问题,我想指出您的代码的一些改进。你的代码可以用这种方式编写:
@if (Page.User.Identity.IsAuthenticated){
using (Html.BeginForm("Logoff", "Account", FormMethod.Post, new { id="formLogout" }) {
Html.AntiForgeryToken();
<a href="" id="logout">Logout</a>
}
}
<script type="text/javascript">
$(function() {
$('#formLogout').click(function() {
$('#formLogout').submit(); return false;
});
}};
</script>
这做了一些事情。首先,它简化了标记。这被称为“不引人注目的”javascript,因为它删除了所有那些丑陋的“onclick”和其他类型的javascript相关事件。
其次,它会从您的标记中分离您的javascript逻辑,使其更易于维护。
另请注意,我正在使用BeginForm html帮助程序,这也简化了标记。请注意整个块中只有一个@符号?