【问题标题】:ASP.NET page inheritance: Controls from base class are not initializedASP.NET 页面继承:来自基类的控件未初始化
【发布时间】:2013-04-26 17:02:04
【问题描述】:

我正在使用基本页面和继承页面。基本页面工作正常。

在继承的页面中,我有以下@Page-directive:

<%@ Page Title="" Language="C#" AutoEventWireup="True" Inherits="SubPage" CodeFileBaseClass="BasePage" CodeFile="SubPage.aspx.cs" %>

以及下面的代码隐藏文件

公共部分类子页面:BasePage

问题是在base类的Page_Load中,所有的Controls都是空的。

在这种情况下,母版页对我来说不是解决方案。

【问题讨论】:

  • 与 Winforms 不同,页面(表单)继承不是“可视的”。母版页是获取控件层次结构或“层”的“正确”方式。基本页面通常用于保存通用逻辑,而不是通用 UI。
  • 但我想覆盖基类中的方法。使用母版页时这是不可能的
  • 你可以那样重写方法,但你不能那样做控制。
  • 您是否重写了 OnInit 方法并忘记调用 base.OnInit(它调用 InitialComponent 并设置您的控件)?
  • 请您再发布一些代码@user2224780 吗?

标签: asp.net inheritance webforms


【解决方案1】:

像往常一样继承您的代码隐藏:

public partial class SubPage: BasePage

并在标记中执行以下操作:

<% @ Page Language="C#" MasterPageFile="~/Master.master" Title="SubPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
    Main content.
</asp:Content>

http://msdn.microsoft.com/en-us/library/vstudio/wtxbf3hh(v=vs.100).aspx

编辑:

如果母版页不是您想要的,您将不得不这样做:

<%@ Page Title="" Language="C#" AutoEventWireup="True" Inherits="BasePage" CodeFileBaseClass="BasePage" CodeFile="SubPage.aspx.cs" %>

并复制下面 BasePage 的整个标记。 Code-Behind 再次以同样的方式继承:

public partial class SubPage: BasePage

【讨论】:

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