#asp.net #master-pages
#asp.net #мастер-страницы
Вопрос:
У меня есть эта страница
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Charts : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.Header.Title = "Some title";
}
}
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Charts.aspx.cs" Inherits="Charts" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<ul>
<li><a href="ReportMissionType.aspx">ReportMissionType</a></li>
</ul>
</asp:Content>
и в MasterPage.master определен тег заголовка
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Title</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>
но все же, когда я пытаюсь установить заголовок со страницы содержимого (выше)
Страница.Заголовок.Title = «Некоторый заголовок»;
это выдает мне ошибку, в которой говорится, что
Страница.Заголовок.Ссылка на объект заголовка не установлена для экземпляра объекта.
почему я не могу установить заголовок со страницы содержимого?
Ответ №1:
Чтобы получить доступ к дочерним элементам head
элемента, вам необходимо установить runat="server"
атрибут для элемента head.
<head runat="server">
<title>Title</title>
...
</head>
Комментарии:
1. да, я сам это понимаю. добавив этот тег в masterpage, все работает
Ответ №2:
Согласно документации, Page.Header
:
Возвращает заголовок документа для страницы, если элемент head определен с помощью runat=server в объявлении страницы.
Чтобы элементы были доступны на стороне сервера в качестве элементов управления в веб-формах, они должны выполняться на сервере:
<head runat="server">