1

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

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

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

Master.PageTitle = "My New Page Title";

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

这个确切的调用在 TestMstr 中运行良好。我知道 TestMstr 和 RTM23a 的内容是相同的,因为我已经将 TestMstr 复制到 Report1 并且只是将 TestMstr 更改为 RTM23a。在 RTM23a 中,键入“Master”。给出显示 PageTitle 属性的智能感知. Build->Build Page、Build->Build Web Site 和 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 在服务器上工作正常。我的调试似乎很简单。

4

1 回答 1

1

文件系统将 RTM23a 和代码复制到项目文件夹之外,然后使用 IDE UI 删除文件。接下来,在 VWD 中仍然打开项目的情况下,文件系统将文件复制回项目文件夹并使用 Add Existing Item... 菜单将它们添加回来。所以问题解决了,但谜团仍然存在。之前也关闭了ASP.NET开发服务器也无济于事。

于 2013-11-28T15:50:54.650 回答