2009-01-29 68 views
2

我正在使用母版頁,並且無法從@ Page指令中設置頁面標題。我所有的類都繼承自類myPage,它繼承自ASP.NET System.Web.UI.Page類。 請注意:我有runat =「服務器」設置在我的母版頁頭標記。使用母版頁從ASP.NET中的@ Page指令設置頁面標題

這裏是我的@ Page指令看起來像的文件test.aspx.vb

<%@ Page language="VB" MasterPageFile="~/MainMaster.master" 
autoeventwireup="false" CodeFile="test.aspx.vb" 
Inherits="test" Title="test" %> 

這裏是test.aspx.vb樣子:

Partial Class test 
    Inherits myPage 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    End Sub 

End Class 

這是我的主文件,MainMaster.master,看起來像:

<%@ Master Language="VB" CodeFile="MainMaster.master.vb" Inherits="MainMaster" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head runat="server"> 
    <title>untitled</title> 
</head> 
... 

現在,當您在瀏覽器中查看test.aspx時,您會看到標題'test'。但相反,您會根據母版頁看到「無標題」。經過反覆試驗,我修改了測試類直接System.Web.UI.Page繼承,而不是MYPAGE的是這樣的:

Partial Class test 
    Inherits Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    End Sub 

End Class 

,一切工作就好了。爲什麼我的頁面是myPage而不是的子項System.Web.UI.Page阻止在@ Page指令中正確設置標題?

我意識到我可以通過編程方式設置頁面標題,通過每頁中的Page_Load方法,但我寧願在.aspx文件中的@ Page指令中執行此操作。

這是一個非常奇怪和令人沮喪的問題,我很茫然!

謝謝!

回答

2

我感謝大家的幫助;我找到了一個解決方案。問題在於類有Title的屬性,但是在屬性的Set部分中並沒有像本應該那樣將更改傳遞給Page.Title

單行更改修復了我的問題:)

0

我有一個非常相似的設置給你。我有從自己從頁面繼承的自定義基本頁面繼承的內容頁面。我沒有在aspx上設置標題並在瀏覽器中顯示任何問題。我在我的代碼和你的代碼之間唯一的區別是我的母版頁有autoeventwireup屬性,而你的母版頁沒有,並且你的母版頁有一個名爲codefile的屬性,我的代碼隱藏。

內容頁:

<%@ Page Title="Login to Application X" Language="vb" AutoEventWireup="false" MasterPageFile="~/masterpages/mymasterpage.Master" 
    CodeBehind="login.aspx.vb" Inherits=".login" %> 

母版頁:

<%@ Master Language="VB" AutoEventWireup="false" CodeBehind="mymasterpage.master.vb" 
    Inherits=".mymasterpage" %> 
+0

您是使用VB還是C#? – 2009-01-29 21:40:32

+0

謝謝你的回覆,丹。我嘗試將AutoEventWireup =「false」添加到我的母版頁中,但沒有任何結果。關於代碼隱藏與代碼文件,顯然代碼文件與.NET 2.0中所做的更改有關:http://www.ddj.com/windows/187202007 – wilsoniya 2009-01-29 21:47:40

1

你有你的基本頁面做什麼樣的方法(myPage.vb)。

如果您重寫任何默認方法,您是否調用這些頁面的基本版本?

在C#

我有這樣的事情:

protected override void OnInit(EventArgs e) 
{ 
    // Do my custom processing. 

    // Don't forget to call base OnInit here: 
    base.OnInit(e); 
} 

如果不調用這些方法,那麼他們發生你(像佈線了母版的標題)的事件不會火。

相關問題