Выберите Header in ASP.NET Page

Я создал основную страницу (Site.master), который содержит код для отображения заголовка, нижнего колонтитула и боковой панели. Это действительно работает отлично, но я испытываю затруднения при выяснении, как динамично выбрать заголовок.

В основном существует две возможных опции заголовка. Если пользователь не зарегистрирован, я хочу, чтобы они видели поле входа в систему и ссылки для восстановления их пароля и т.д. Если они будут зарегистрированы, то они будут видеть, что выход из системы связывается, и некоторая информация об их учетной записи (подобный как ТАК работы, на самом деле).

Действительно ли возможно иметь проверку Site.master и использование, какой бы ни заголовок я хочу в зависимости от состояния входа в систему пользователя? Я довольно застреваю на том, где начать с этого (я думал, возможно, некоторые регистрации кода - позади основной страницы), таким образом, любая справка будет цениться.

5
задан JasCav 11 February 2010 в 20:52
поделиться

4 ответа

Вам следует рассмотреть возможность использования встроенного элемента управления, LoginView ( MSDN ). Он специально разработан для предоставления нескольких шаблонов (представлений) для прошедших проверку подлинности и анонимных пользователей.

Это лучший практический подход. Вы можете определить свои верхние и нижние колонтитулы и т. Д. Для вошедших в систему и анонимных пользователей, с соответствующими кнопками входа / выхода, информацией о пользователе и т. Д.

Вот очень простой пример:

<asp:LoginView id="LoginView1" runat="server">
    <AnonymousTemplate>
        <asp:HyperLink ID="lnkLogin" runat="server" NavigateUrl="~/Login.aspx" Text="Login"/>
    </AnonymousTemplate>
    <LoggedInTemplate>
        You are logged in as: <asp:LoginName id="lnCurrentUser" runat="server" />.
    </LoggedInTemplate>
</asp:LoginView>

Все остальное сделает платформа .NET. , и отобразить правильный шаблон без лишнего кода. Если вы в конечном итоге используете несколько ролей в своем приложении, вы можете сделать еще один шаг и определить шаблоны для этих ролей (администратор против обычного пользователя и т. Д.)

Идеальное решение вашего вопроса, основанное на приведенном выше: Как: отображать различную информацию для анонимных и вошедших в систему пользователей

3
ответ дан 14 December 2019 в 13:35
поделиться

Лично я бы поместил каждый набор элементов управления заголовком в 2 разных заполнителя и по умолчанию установил оба невидимых

Затем с помощью некоторого кода на главной странице

PlaceHolder1.Visible = Context.User.IsAuthenticated
PlaceHolder2.Visible = !Context.User.IsAuthenticated
1
ответ дан 14 December 2019 в 13:35
поделиться

Да, очень легко, поместив два возможных заголовка в их собственные элементы управления Panel и просто сказав следующее в Page_Load :

if ( Request.IsAuthenticated )
{
    // Display
    pnlAuthenticated.Visible = true;
    pnlGuest.Visible = false;
} 
else 
{
    // Display
    pnlAuthenticated.Visible = false;
    pnlGuest.Visible = true;
}
2
ответ дан 14 December 2019 в 13:35
поделиться

Попробуйте, замените? с именем схемы

select TABLE_NAME from  INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA =?
  AND TABLE_TYPE = 'BASE TABLE'
-121--1830354-

Я считаю, что это должно работать:

myObject = (MyAbstractClass)Activator.CreateInstance(null, childClassString);

null в первом параметре по умолчанию соответствует текущей исполняемой сборке. Для получения дополнительной информации: MSDN

edit: забыли привести к MyAbstractClass

-121--934617-

Да два способа сделать это; встроить заголовок в панель и показать/скрыть панель в зависимости от состояния входа в систему (которое происходит в коде). Кроме того, можно использовать две страницы-шаблона и выполнить эту проверку в методе OnPreInit (или обработчике событий PreInit) и переключиться, чтобы показать, какую страницу-шаблон необходимо использовать (в этом обработчике событий можно изменять только программные страницы-шаблоны).

Проблема со вторым вариантом - тот HttpContext. Current.user может не быть доступным в PreInit...

HTH.

0
ответ дан 14 December 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: