c# - 两个 ASPX 页面可以继承类背后的相同代码吗?

标签 c# .net asp.net code-behind

我刚刚开始学习 ASP.NET。据我了解,ASP.NET 与老式 ASP 的不同之处在于页面的逻辑代码作为单独的文件存在,而不是嵌入到 ASP 页面中。因此,当用户请求像 ShoppingCart.aspx 这样的页面时,服务器会读取顶部的指令 ...

<%@ Page Title="" Language="C#" MasterPageFile="~/Styles/Site.Master" AutoEventWireup="true" CodeBehind="MyShoppingCart.aspx.cs" Inherits="TailspinSpyWorks.MyShoppingCart" %>

这告诉服务器什么文件和文件中的什么类与页面相关联。代码隐藏类也有成员变量对应页面上的每个控件,为代码隐藏文件中的代码提供了一种操作控件的方法。

首先,我的理解正确吗?

其次,是否可以使用两个具有相同名称控件的独立 ASPX 页面来设置一个站点,这两个页面都有一个指向相同文件和类的指令?你甚至想这样做吗?两个页面可以具有相同的功能但布局不同。我在想这可能是一种创建单独的“桌面”和“移动”页面版本的方法,而无需在代码隐藏文件中复制内容。

我想最终我想知道的是,是否有办法定义抽象页面?假设创建一个抽象页面定义,该定义表示页面必须具有控件“cart_list”、“total_lbl”,但是能够拥有继承自该抽象页面的多个页面?

最佳答案

是的,两个页面可以继承自同一个类。就像它可以直接从 Page 类继承,甚至没有关联的 .cs 文件(当你有一个非静态页面但不处理事件或可能需要代码的东西时很有用-课后)。

在实践中,我认为直接从同一个类继承多个 ASP.NET 页面并不是一个好主意。这并不常见,所以:

  • 代码将更难理解且无法扩展,
  • 将难以在 Visual Studio 中进行管理,尤其是涉及到事件、控件等时。
  • 将对现有/缺失的控件造成很大的痛苦。详见Guffa answer below .

如果您网站的多个页面共享相同的逻辑,

  • 为每个页面创建一个类,并从一个公共(public)父类继承这些类,该父类将包含公共(public)方法和属性,并将继承自 Page 类。您将获得广泛且易于理解的解决方案。
  • 或者创建母版页(如果案例适合母版页)。

关于c# - 两个 ASPX 页面可以继承类背后的相同代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643988/

相关文章:

c# - 如何编写转换器类?如何高效编写映射规则?

c# - 在 C# 或 VB.NET 中使用 'System.Activities.Statements.StateMachine' 类的示例

c# - 什么时候应该避免扩展方法?

c# - 将 C# 代码转换为 PowerShell

c# - 在直接从调用另一个库返回任务的库中使用 ConfigureAwait(false) 是否有利?

c# - 异步操作等待或超时

c# - 在 WndProc 中未获取 Windows 8 WM_POINTER* 事件

.net - 如何使用 XmlSerializer 序列化 System.Type 对象?

javascript - 对动态填充的列表框进行排序

asp.net - 旧版 Web 应用程序 - 确定与现代浏览器的向前兼容性?