1

ページのページ タイトルを管理するために、ContentPlaceHolder を使用しているマスター ページがあります。

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

そして、私が書くすべてのページに

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

現在、私のクライアントは、すべてのページのタイトルを削除してマスター ページに保持するように求めていますが、将来必要に応じてデータを挿入できるように、すべてのページとマスター ページのコンテンツ プレース ホルダー コードを削除しないでください。したがって、私の問題は、マスターページとページでそれらを削除しないと、マスターページにタイトルを付けることができないことです。この状況をどのように処理できますか?

4

5 に答える 5

2

みんなありがとう..私は解決策を得ました

マスターページ内からタイトルの一部を設定したい場合。たとえば、すべてのページのタイトルを接尾辞「– MySite」で終わらせたい場合があります。

これを試してみると(MySiteが追加されていることに注意してください):

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

ページを実行すると、MySite がレンダリングされていないことがわかります。これは、HtmlHead コントロールの癖のようです。これは、HtmlHead コントロール内のタイトル タグ自体がコントロールになったためです。

修正は非常に簡単です。テキストを LiteralControl に追加します。

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <asp:Literalrunat="server" Text=" - MySite" />
  </title>
</head>
于 2010-01-11T08:01:34.347 に答える
1

ページ タイトルを上書きする良い解決策が必要な場合:

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 サーバー コントロールです。ページの読み込み (または以前のイベント) で Page.Title を設定すると、問題なく動作します。

このタスクを実行するために、runat サーバー スクリプト タグをマスター ページに配置することもできます。

于 2010-01-11T15:09:44.690 に答える
0

最も簡単な方法:

currentContentPlaceHolderを HTML のどこかに移動し、<asp:PlaceHolder runat="server" visible="false"/>. 後で必要になった場合は、ContentPlaceHolder を元に戻してください。

于 2010-01-11T07:32:39.087 に答える
-1

マスター ページで OnPreRender イベントを使用してタイトルを設定し、各ページに設定されている内容を上書きします。

于 2010-01-11T07:28:57.867 に答える
-1

属性 Visible=false をマスター ページの ContentPlaceHolder に追加しない理由

これがあなたの状況を処理する最も簡単な方法だと思います。

ハッピーコーディング。

于 2010-01-11T07:43:40.010 に答える