如果设置了MasterType,如何使用自动生成的Master属性修复名称空间问题

cit*_*nas 5 c# asp.net master-pages properties

经过几个星期的这个问题后,我终于决定要求解决以下问题:

在.aspx页面中,您可以设置

<%@ MasterType VirtualPath="~/Mastername.master" %>
Run Code Online (Sandbox Code Playgroud)

这会在.aspx.designer中生成自动生成的属性

public new Mastername Master {
    get {
        return ((Masternamee)(base.Master));
    }
}
Run Code Online (Sandbox Code Playgroud)

工作得很好.但是,如果我在.aspx文件中进行了更改,则该属性将自动生成新的,如下所示:

public new NAMESPACE1.Mastername Master {
            get {
                return ((NAMESPACE1.Mastername)(base.Master));
            }
        }
Run Code Online (Sandbox Code Playgroud)

之后将无法进行编译,因为无法在给定的命名空间中解析MasterPage的类.母版页将NAMESPACE1作为命名空间.

每个内容页面都具有相同的NAMESPACE1.autogenerated属性尝试在NAMESPACE1.NAMESPACE1中查找将失败的母版类,因为它不存在.当然我可以删除第一个NAMESPACE1.使应用程序再次可编辑,但几乎每次我在.aspx文件中进行更改时,这样做很糟糕.

有没有办法避免这个问题?我能想到的唯一方法是忽略自动生成的属性,并在每次我想要访问母版页时进行显式转换.

编辑:我正在使用Visual Studio 2008 Professional SP1.

cit*_*nas 0

我找到了一个有效的解决方案。我不会在设计器文件中使用自动生成的属性。我将编写自己的包装器属性,并在每个内容页中实现该属性。