ASP.NET @MasterType指令不起作用

时间:2013-11-27 20:11:29

标签: asp.net vwdexpress

使用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'的定义,也没有扩展方法'PageTitle'接受类型'System.Web.UI'的第一个参数可以找到.MasterPage'(您是否缺少using指令或程序集引用?)。

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

1 个答案:

答案 0 :(得分:0)

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