ASP.NET@MasterType指令无效



使用VWD 2008 Express和C#。我在没有使用母版页的情况下创建了一些网页。后来我决定要使用母版页,所以我想我会先做一个测试页。创建母版页,然后添加新项目(TestMstr.aspx)和选择母版页选项。在MasterPage.master.cs中添加了类型为"string"的公共属性,这样我就可以通过从内容页设置属性来使用这些属性在母版页中设置标签文本。这需要内容页面中的@MasterType页面指令:

<%@ MasterType virtualpath="~/MasterPage.master" %>

测试页面上的一切都很好,然后事情开始变得有趣起来。我开始重新格式化我现有的页面以使用母版页,但现在我在从编辑过的页面(RTM23a.aspx)调用公共属性时出错:

Master.PageTitle = "My New Page Title";

尝试运行页面时出现此错误:"System.Web.UI.MasterPage"不包含"PageTitle"的定义,也找不到接受类型为"System.Web.UI.MasterPage"的第一个参数的扩展方法"PageTitle"(是否缺少using指令或程序集引用?)。

这个精确的调用在TestMstr中运行良好。我知道TestMstr和RTM23a的内容是相同的,因为我已经将TestMstr复制到Report1中,并且刚刚将TestMstr更改为RTM23a。在RTM23a中,键入"Master"提供显示PageTitle属性的intellisense。"Build"->"Build Page"、"Build"->"Build Web Site"one_answers"Build"-->"Rebuild Web Site"菜单项不会出现任何错误,只会发出警告。下面是两个文件的CMD shell文件比较(FC)。

ASPX文件:

Comparing files TestMstr.aspx and RTM23A.ASPX
***** TestMstr.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="TestMstr.aspx.cs" Inherits="TestMstr" %>
<%@ MasterType virtualpath="~/MasterPage.master" %>
***** RTM23A.ASPX
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="RTM23a.aspx.cs" Inherits="RTM23a" %>
<%@ MasterType virtualpath="~/MasterPage.master" %>
*****

文件背后的代码:

Comparing files TestMstr.aspx.cs and RTM23A.ASPX.CS
***** TestMstr.aspx.cs
public partial class TestMstr : System.Web.UI.Page
{
***** RTM23A.ASPX.CS
public partial class RTM23a : System.Web.UI.Page
{
*****
***** TestMstr.aspx.cs
  private int _iMon, _iYr;
  private RptTestMstr _StateDur;
***** RTM23A.ASPX.CS
  private int _iMon, _iYr;
  private RptRtaWFStages _StateDur;
*****
***** TestMstr.aspx.cs
  {
    _StateDur = new RptTestMstr(_iYr, _iMon);
    _StateDur.RtaInput = this.txtRtaNos.Text;
***** RTM23A.ASPX.CS
  {
    _StateDur = new RptRtaWFStages(_iYr, _iMon);
    _StateDur.RtaInput = this.txtRtaNos.Text;
*****
***** TestMstr.aspx.cs
  // End TestMstr class definition
}
***** RTM23A.ASPX.CS
  // End RTM23a class definition
}
*****

可能是什么原因导致了这个问题?页面在同一个项目中,所有内容看起来都是正确的,但一个运行,另一个不运行。需要明确的是,TestMstr是通过从一开始就选择母版页创建的,而RTM23a最初是在没有选择母版页面的情况下创建的,然后被编辑为看起来像TestMstr。

更新:RTM23a在服务器上运行良好。似乎只是我的调试失败了。

文件系统在项目文件夹外复制RTM23a和代码,然后使用IDE UI删除文件。接下来,项目仍在VWD中打开,文件系统将文件复制回项目文件夹,并使用"添加现有项…"。。。菜单将它们添加回。所以问题解决了,但谜团依然存在。之前还关闭了ASP.NET开发服务器,但没有成功。

最新更新