У меня есть несколько ссылок (вход в систему, выход из системы и регистрация) в шаблоне _layout, где ссылки отображаются в зависимости от того, вошел ли пользователь в систему. Например:
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/ - которая объясняет порядок выполнения движка Razor, но в моем случае, похоже, он выполняется по-другому. В идеале я ожидал бы, что FormsAuthentication.SignOut () будет выполняться до User.Identity.IsAuthenticated в _layout.
Что я делаю не так? Спасибо!