Вопрос

Чтобы управлять заголовком страницы на странице, у меня есть главная страница, где я беру ContentPlaceHolder .

  <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" />  </title>

и на каждой странице я пишу

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">Some Title Here
</asp:Content>

Теперь мой клиент просит меня удалить заголовок на всех страницах и сохранить его на главной странице, но не удалять код держателя содержимого на всех страницах и главной странице, чтобы в будущем, если возникнут какие-либо требования, мы могли вставить в них данные.Итак, моя проблема в том, что без удаления их на главной странице и страницах я не могу поместить заголовок на главную страницу.Итак, как я могу справиться с этой ситуацией?

Это было полезно?

Решение

Спасибо, ребята..У меня есть решение

если вы хотите задать часть заголовка изнутри главной страницы.Например, вы можете захотеть, чтобы заголовок каждой страницы заканчивался суффиксом “ – MySite”.

Если вы попробуете это (обратите внимание на прикрепленный – MySite):

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> - MySite
  </title>
</head>

И запустите страницу, вы обнаружите, что – MySite не отображается.По-видимому, это особенность элемента управления HtmlHead.Это связано с тем, что тег title в элементе управления HtmlHead теперь сам является элементом управления.

Исправить это довольно просто.Добавьте свой текст в LiteralControl вот так.

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <asp:Literalrunat="server" Text=" - MySite" />
  </title>
</head>

Другие советы

Если вам нужно хорошее решение для переопределения заголовка страницы:

Создайте свой собственный класс, который наследуется от System.Web.Mvc.ViewPage.

Пусть ваши страницы просмотра наследуются от этого класса:

Напишите обработчик Page_Load в вашем новом классе, который делает что-то вроде этого:

Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
   Me.Title = "Company Name | " + Page.Title
End Sub

Вам также не нужен владелец места размещения контента, чтобы изменить заголовок.В <head> Тег уже является элементом управления сервера runat.Настройка страницы.Заголовок при загрузке страницы (или более раннем событии) работает просто отлично.

Вы также могли бы поместить тег сценария runat server на свою главную страницу, чтобы выполнить и эту задачу.

Самый простой способ:

Переместить текущий ContentPlaceHolder куда-нибудь в ваш HTML-код и оберните его в <asp:PlaceHolder runat="server" visible="false"/>.Когда вам это понадобится позже, просто переместите ContentPlaceHolder обратно.

Используйте событие OnPreRender на главной странице, чтобы задать заголовок, переопределяя то, что было установлено на каждой странице.

почему бы не добавить атрибут Visible=false в ContentPlaceHolder Главной страницы

Я думаю, что это самый простой способ справиться с вашей ситуацией.

Счастливого кодирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top