我正在使用母版页,但在使用@ 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指令中进行。
这是一个非常奇怪和令人沮丧的问题,我不知所措!
谢谢!
答案 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" %>