【问题标题】:asp.net partial classesasp.net 部分类
【发布时间】:2010-11-12 07:25:03
【问题描述】:

我想为单个 aspx 文件创建两个部分类。我正在使用 vs2005 dotnet 2.0。我无法从另一个部分类中的一个部分类访问方法。

谁能帮帮我。

部分类 1:我的主 aspx 页面

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) { } 
    private void meth() { } 

} 

部分类:2

public class _Default : System.Web.UI.Page 
{ 
    public _Default() { } 
} 

我无法访问部分类 2 中的 meth 方法

【问题讨论】:

  • 你能把类定义贴在这里吗?
  • 确保你的两个类都有same namepartial修饰符并扩展System.Web.UI.Page
  • 我也有同样的情况,你所说的......但它仍然没有成功。部分类 1:我的主 aspx 页面公共部分类 _Default:System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } private void meth() { } } 部分类:2 公共类 _Default:系统.Web.UI.Page { public _Default() { } } 我无法访问部分类 2 中的方法。

标签: asp.net partial-classes


【解决方案1】:

您应该对两个类声明都使用部分修饰符,如下所示:

// Default.aspx.cs
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) { } 
    private void meth() { } 
} 

// Default_Part2.aspx.cs
public partial class _Default : System.Web.UI.Page 
{ 
    public _Default() 
    { 
        meth();
    }
} 

在 VS 2005 中,可能还需要更新 aspx 文件的依赖项,可在此处找到:

http://aspnetresources.com/blog/partial_class_files_in_vs2k5

简而言之,用纯文本编辑器打开项目文件,查找:

<Compile Include="Default_Part2.aspx.cs">
    <SubType>ASPXCodeBehind</SubType>
</Compile>

像这样添加你的文件:

<Compile Include="Default_Part2.aspx.cs">
   <SubType>ASPXCodeBehind</SubType>
   <DependentUpon>Default.aspx</DependentUpon>
</Compile>

我不知道这是否可行,因为我没有 VS 2005 来测试它。希望对您有所帮助...

【讨论】:

  • 我错过了评论中的部分修饰符。但我使用的是与上图相同的代码。它抛出编译时错误说 Meth() 在当前上下文中不存在。此外,我可以访问 System.Web.UI.Page 以在第二类中继承。我的第二堂课在 .cs 文件中可用。请帮忙...
  • 在您上面发布的第二类声明中,您错过了“部分”修饰符。您是否也在您的代码中错过了它,或者只是在您的帖子中?
  • 文件名:Default.aspx.cs ----------------------------公共部分类_默认:系统.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } private void meth() { } } FileName : Class1.cs ------------------ ----- 公共部分类 _Default : System.Web.UI.Page { public _Default() { meth(); } }
  • 这些类是否共享相同的命名空间?
  • 你能把包含单个aspx文件部分类的示例项目发给我吗?电子邮件ID:bolforever@yahoo.co.in
【解决方案2】:

您的第二个班级没有partial 修饰符。

你需要:

public partial class _Default : System.Web.UI.Page 
{ 
    public _Default() { } 
} 

【讨论】:

    【解决方案3】:

    *关于部分类的一些事情:-*

    所有部分定义必须以关键字“部分”开头。 所有属于同一类型的部分类型必须在同一程序集和模块中定义。 方法签名(返回类型、方法名称和参数)对于聚合类型(已部分定义)必须是唯一的。 部分类型必须具有相同的可访问性。 如果任何部分被密封,则整个类都被密封。 如果任何部分是抽象的,则整个类都是抽象的。 任何部分类型的继承都适用于整个类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多