gpt4 book ai didi

Asp.Net,从继承页面类获取对象?

转载 作者:行者123 更新时间:2023-12-02 16:13:24 24 4
gpt4 key购买 nike

我有 baslik.aspx 页面,它使用母版页。我创建一个 Worker.cs 文件相同的库,我想从 Worker.cs 访问 baslik.aspx 文字对象。它说空对象引用!

我的 baslik.aspx:

<%@ Page Async="true" EnableEventValidation="true" Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Baslik.aspx.cs" Inherits="F8.Imza.Baslik" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
..
..
<asp:Literal runat="server" id="myBaslikLiteral">
..
</asp:Content>

baslik.aspx.cs:

namespace F8.Imza
{
public partial class Baslik : System.Web.UI.Page
{
...
...
...
}
}

我想从 Worker.cs 访问页面(正在运行)上的任何对象:所以我的尝试...:

public partial class Worker : Baslik
{
public void ActionStart()
{
this.myBaslikLiteral.Text = "Bla bla bla";
//i can see my literal name but it is null.
}
}

最佳答案

在 .Net 1.1 时代,事情变得更简单;如this答案提到,控件过去是在明确定义的位置创建的,其方式类似于在 InitializeComponent 中实例化 Windows 窗体控件的方式。

.Net 2.0 时代改变了这一切;不再需要拥有所有这些样板代码 - 相反,框架将根据 page.designer 中声明的控件在第一次运行时(或在预编译站点之前)生成所有必要的连接。 cs 文件。

不幸的是,当您从标准 ASPX 页面继承时,只会自动创建在子文件 child.designer.cs 文件中声明的控件;父属性在父控件上可用,但它们永远不会自动初始化(正如链接答案所建议的那样,查看生成的代码非常有启发性)。

相反,人们将其基本页面封装在独立的类中是很常见的;此类以编程方式构建必要的控件,例如,在 CreateControlsMethod 或基类中的类似方法中,在 page lifecycle 中早期调用(如 Page_Init)。但是,还要注意有多少人只是将常见页面功能放在 BasePage 中(请参阅 here 作为典型示例),因为创建整个基本控件树非常繁琐,并且使更改布局变得困难(几乎无法维护,因为您必须有效地创建整个页面都在代码后面)。

但是,在页面中封装功能区域(如常见表单字段)的一种更简单的方法就是创建 UserControls .

关于Asp.Net,从继承页面类获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com