我有几个链接(登录,注销和注册)在_layout模板,这里的链接取决于用户是否登录显示像这样:MVC3剃刀引擎执行/渲染顺序
if (User.Identity.IsAuthenticated)
{
<span class="username">@User.Identity.Name</span>
<span class="link">@Html.ActionLink("Logout", "Logout", "Account")</span>
}
else
{
<span class="link">@Html.ActionLink("Login", "Login", "Account")</span>
<span class="link">@Html.ActionLink("Register", "Register", "Account")</span>
}
问题是,注销链接在用户首次退出系统时仍然显示(我希望立即替换为登录并注册链接) - 即直到页面刷新,或者用户移到另一页面。这里是注销操作代码:
public ActionResult Logout()
{
FormsAuthentication.SignOut();
Session.Abandon();
return View();
}
我已经通过这个环节了 - http://mvcdev.com/differences-between-asp-net-razor-and-web-forms-view-engines/ - 这也解释了剃刀引擎的执行顺序,但对我来说这似乎是执行不同。理想情况下,我希望FormsAuthentication.SignOut()在_layout中的User.Identity.IsAuthenticated之前执行。
我在做什么错?谢谢!
谢谢Darin!我不认为这会很简单! – tathagata 2011-05-23 06:47:53