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

Eri*_*tas 9 .net c# 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",但是然后能够有多个页面继承自这个抽象页面?

Ars*_*nko 8

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

实际上,我认为直接从同一个类继承几个ASP.NET页面并不是一个好主意.这不常见,所以:

  • 代码将更难理解,无法扩展,
  • 在Visual Studio中很难管理,特别是涉及事件,控件等时.
  • 现有/缺少控件会造成很大的痛苦.请参阅下面详细的Guffa答案.

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

  • 每页创建一个类,并从公共父类继承这些类,该父类将包含公共方法和属性,并将从Page类继承.您将获得广泛且易于理解的解决方案.
  • 如果案例是母版页的良好候选者,则创建母版页.

  • 为每个页面创建一个类,并从公共父类继承这些类,这些类将包含常用方法和属性,并将从Page类继承.您将获得广泛且易于理解的解决方案. (2认同)