#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