2

我正在使用母版页,并且无法从 @ Page 指令设置页面标题。我的所有类都继承自一个类myPage,该类继承自 ASP.NET System.Web.UI.Page类。请注意:我在母版页的头部标签中设置了runat="server" 。

这是文件test.aspx.vb我的 @Page指令的样子:

<%@ 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 指令中进行设置。

这是一个非常奇怪和令人沮丧的问题,我很茫然!

谢谢!!!

4

3 回答 3

2

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

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

于 2009-01-30T18:45:48.080 回答
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);
}

如果您不调用这些方法,那么在它们中为您发生的事件(例如连接母版页的标题)将不会触发。

于 2009-01-30T14:34:59.753 回答
0

我有一个和你非常相似的设置。我的内容页面继承自自定义基本页面,该页面本身继承自页面。我对在 aspx 上设置的标题并在浏览器中显示没有任何问题。我在我的代码和你的代码之间看到的唯一区别是我的母版页有 autoeventwireup 属性,而你的母版页没有,而且你的母版页有一个名为 codefile 的属性,而我的有 codebehind。

内容页:

<%@ 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" %>
于 2009-01-29T21:36:06.283 回答