Я создал основную страницу (Site.master), который содержит код для отображения заголовка, нижнего колонтитула и боковой панели. Это действительно работает отлично, но я испытываю затруднения при выяснении, как динамично выбрать заголовок.
В основном существует две возможных опции заголовка. Если пользователь не зарегистрирован, я хочу, чтобы они видели поле входа в систему и ссылки для восстановления их пароля и т.д. Если они будут зарегистрированы, то они будут видеть, что выход из системы связывается, и некоторая информация об их учетной записи (подобный как ТАК работы, на самом деле).
Действительно ли возможно иметь проверку Site.master и использование, какой бы ни заголовок я хочу в зависимости от состояния входа в систему пользователя? Я довольно застреваю на том, где начать с этого (я думал, возможно, некоторые регистрации кода - позади основной страницы), таким образом, любая справка будет цениться.
Вам следует рассмотреть возможность использования встроенного элемента управления, 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. , и отобразить правильный шаблон без лишнего кода. Если вы в конечном итоге используете несколько ролей в своем приложении, вы можете сделать еще один шаг и определить шаблоны для этих ролей (администратор против обычного пользователя и т. Д.)
Идеальное решение вашего вопроса, основанное на приведенном выше: Как: отображать различную информацию для анонимных и вошедших в систему пользователей
Лично я бы поместил каждый набор элементов управления заголовком в 2 разных заполнителя и по умолчанию установил оба невидимых
Затем с помощью некоторого кода на главной странице
PlaceHolder1.Visible = Context.User.IsAuthenticated
PlaceHolder2.Visible = !Context.User.IsAuthenticated
Да, очень легко, поместив два возможных заголовка в их собственные элементы управления Panel и просто сказав следующее в Page_Load
:
if ( Request.IsAuthenticated )
{
// Display
pnlAuthenticated.Visible = true;
pnlGuest.Visible = false;
}
else
{
// Display
pnlAuthenticated.Visible = false;
pnlGuest.Visible = true;
}
Попробуйте, замените? с именем схемы
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
Да два способа сделать это; встроить заголовок в панель и показать/скрыть панель в зависимости от состояния входа в систему (которое происходит в коде). Кроме того, можно использовать две страницы-шаблона и выполнить эту проверку в методе OnPreInit (или обработчике событий PreInit) и переключиться, чтобы показать, какую страницу-шаблон необходимо использовать (в этом обработчике событий можно изменять только программные страницы-шаблоны).
Проблема со вторым вариантом - тот HttpContext. Current.user может не быть доступным в PreInit...
HTH.