ASP.NET не удается установить заголовок страницы со страницы содержимого

#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">