Asp.net встроенный логин для скрытия меню

#asp.net-mvc #menu #login-control

#asp.net-mvc #меню #вход-контроль

Вопрос:

Я делаю ASP.NET Приложение MVC, использующее встроенный логин. На этой странице также есть 2 пункта меню, к которым пользователь может получить доступ без входа в систему.

Мое требование заключается в том, что пользователь должен иметь доступ к любому из пунктов меню, пока он не войдет в систему, поэтому мне нужно либо скрыть пункты меню, либо отключить клики по ним, пока пользователь не войдет в систему.

Как я могу это сделать?

Комментарии:

1. Проблема в том, что ссылки в строке меню содержат несколько страниц ASP.net MVC и несколько в Asp.net … Строка меню ссылается на несколько страниц в MVC и несколько в asp.net … для MVC я мог бы управлять им с помощью [Авторизовать], но как мне управлять ссылками для asp.net

Ответ №1:

Если вы используете Razor Views, вы могли бы использовать что-то вроде этого:

 @if(Request.IsAuthenticated) {
    <span><a href="#">@user.ShortName</a></span>
    <text> 
    @Html.ActionLink("My Profile", "profile", "account") |
    @Html.ActionLink("Help", "index", "help") |
    @Html.ActionLink("Log Off", "LogOff", "Account")
    </text>
}
  

Код внутри блока @if {…} — это то, что вы бы показали, если бы пользователь вошел в систему.

Существует эквивалентный код для представлений WebForms (.aspx), который вы могли бы выполнить несколькими способами.

Одним из способов было бы работать из исходного кода и манипулировать серверными элементами управления. Итак, ваша страница .aspx будет иметь что-то вроде этого:

 <asp:HyperLink ID="lnkMyProfile" Text="My Profile" NavigateUrl="/myprofile"></asp:HyperLink>
  

Затем в вашем коде (например, aspx.cs):

 if(User.Identity.IsAuthenticated) {
  lnkMyProfile.Visible = true;
} else {
  lnkMyProfile.Visible = false;
}
  

Комментарии:

1. Проблема в том, что у меня мало страниц в ASP.net MVC и несколько в Asp.net … Строка меню ссылается на несколько страниц в MVC и несколько в asp.net … для MVC я мог бы управлять им с помощью [Авторизовать], но как мне управлять ссылками для asp.net