Обычные элементы управления нельзя использовать в области заголовка веб-страницы, но иногда они очень важны, например заголовок, ключевые слова и описание, которые могут быть разными на каждой странице. Итак, как мы можем динамически устанавливать их в соответствии с? содержание?
Метод 1: То, что может сделать asp, конечно, может сделать asp.net. Пока вы пишете всю страницу с помощью Response.Write(), нет ничего, что нельзя было бы настроить. Конечно, вы также можете «<%=a. определенный член %" >". Но очевидно, что при этом нельзя использовать преимущества .net.
Способ 2. Используйте уникальный атрибут asp.net: runat="server", установите идентификатор для заголовка, а затем сделайте его переменной сервера, после чего вы сможете установить его текст. Но полученный таким образом html также будет содержать идентификатор, на который очень неприятно смотреть.
Способ 3. Используйте буквальное управление, стойка регистрации: <HEAD>.
<asp:Literal ID="lt_title" Runat="server" />
<asp:Literal ID="lt_keywords" Runat="server" />
<asp:Literal ID="lt_descri" Runat="server" />
</HEAD>Бэкенд: частный void Page_Load (отправитель объекта, System.EventArgs e)
{
lt_title.Text = "<title>Название</title>";
lt_keywords.Text = "<meta name="keywords" content="keywords">";
lt_descri.Text = "<meta name="description" content="description">";
}
Это в принципе идеально.
Кроме того, на моей странице используется множество пользовательских элементов управления, и эти пользовательские элементы управления имеют уровни. Заголовок страницы может определяться подпользовательским элементом управления в пользовательском элементе управления, а уровень вложенности пользовательских элементов управления не фиксирован. Итак, как установить его динамически?
На домашней странице создайте базовый класс пользовательского элемента управления и добавьте к нему общедоступный метод:
public void SetTitle(string title)
{
SetLiteralText("lt_title", string.Format("<title>{0}</title>", title));
}Добавьте еще один приватный метод:
Private void SetLiteralText (идентификатор строки, текст строки)
{
Буквальный lt = ноль;
Управление Ctrl = это;
делать
{
Ctrl = Ctrl.Родитель;
} while(ctrl != null && ctrl.GetType().FullName != "System.Web.UI.HtmlControls.HtmlForm" );
if(ctrl != null)
{
lt = ctrl.FindControl(id) как литерал;
если (lt != ноль)
lt.Текст = текст;
}
}
Таким образом, вашему пользовательскому элементу управления нужно только наследовать этот базовый класс, а затем вызвать base.SetTitle("title"), когда вы хотите установить заголовок страницы, и задача просто завершается. Для остальных тегов в области заголовка принцип тот же, что и для настройки заголовка.