使用母版页从ASP.NET中的@ Page指令设置页面标题

时间:2009-01-29 21:24:37

标签: asp.net vb.net master-pages

我正在使用母版页,但在使用@ Page指令设置页面标题时遇到问题。我的所有类都继承自继承自ASP.NET System.Web.UI.Page 类的类 myPage 请注意:我在母版页的头标记中设置了 runat =“server”

以下是我的@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”。但相反,你会看到主页上的'无标题'。通过反复试验,我修改了 test 类,直接从 System.Web.UI.Page 继承,而不是像这样继承 myPage :< / p>

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指令中进行。

这是一个非常奇怪和令人沮丧的问题,我不知所措!

谢谢!

3 个答案:

答案 0 :(得分:2)

我感谢大家的帮助;我找到了解决方案。问题是 myPage 类有一个Title属性,但在属性的Set部分没有将更改传递给 Page.Title ,因为它应该是。

一行更改解决了我的问题:)

答案 1 :(得分: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);
}

如果你不调用这些方法,那么它们中发生的事件(比如连接主页的标题)将不会触发。

答案 2 :(得分: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" %>