ASP.NET 页面继承:基类中的控件未被初始化。

3

我将使用一个基础页面和继承的页面。基础页面运行正常。

在继承的页面中,我有以下@Page指令:

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

以下是代码后台文件:

public partial class SubPage:BasePage

问题在于,在基类的Page_Load方法中,所有的控件都为null。

在这种情况下,母版页对我没有帮助。


1
与Winforms不同,页面(表单)继承不是“可视化”的。母版页是获得控件层次结构或“层”的“正确”方式。基础页面通常用于保存公共逻辑,而不是公共UI。 - John Saunders
但是我想要覆盖基类中的方法。当使用主页面时,这是不可能的。 - user2224780
1
你可以用那种方式覆盖方法,但你不能用那种方式控制。 - John Saunders
你是否重写了OnInit方法,却忘记调用base.OnInit(它会调用InitialComponent并设置你的控件)? - John Wu
@user2224780,请问您能否再发布一些代码吗? - Giulio Caccin
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接