Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两个ASPX页面能否继承相同的代码隐藏类?_C#_.net_Asp.net_Code Behind - Fatal编程技术网

C# 两个ASPX页面能否继承相同的代码隐藏类?

C# 两个ASPX页面能否继承相同的代码隐藏类?,c#,.net,asp.net,code-behind,C#,.net,Asp.net,Code Behind,我刚开始学习ASP.NET。据我所知,ASP.NET与旧式ASP的不同之处在于,页面的逻辑代码作为单独的文件存在于ASP页面中,而不是嵌入在ASP页面中。因此,当用户请求类似ShoppingCart.aspx的页面时,服务器会读取顶部的指令 这将告诉服务器文件中与页面关联的文件和类。代码隐藏类还具有对应于页面上每个控件的成员变量,并为代码隐藏文件中的代码提供了操纵控件的方法 首先,我的理解正确吗 第二,是否可以使用两个单独的ASPX页面设置站点,其中两个页面的控件名称相同,并且都有指向相同文件

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

这将告诉服务器文件中与页面关联的文件和类。代码隐藏类还具有对应于页面上每个控件的成员变量,并为代码隐藏文件中的代码提供了操纵控件的方法

首先,我的理解正确吗

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

我想最终我想知道的是,是否有一种方法可以定义一个抽象页面?假设创建一个抽象页面定义,该定义表示一个页面必须具有控件“购物车列表”、“总lbl”,但随后能够具有多个从此抽象页面继承的页面?

是和否

您可以对不同的页面使用相同的类,但是页面控件和类中的变量之间的绑定并不严格

如果变量存在并且具有匹配的类型,那么控件引用将被简单地分配给变量,但是您不能对页面必须包含某些控件进行任何限制。但是,您可以在代码中首先检查变量是否已赋值或是否包含空引用


我曾在一些罕见的场合将同一个类用于不同的页面,但这不是常见的做法。通常这样做没有什么好处,如果您想重用页面中的代码,可以将其放在类文件中并从单独的页面使用。

是的,两个页面可以从同一个类继承。Like可以直接从
页面继承
类,甚至没有关联的.cs文件(当您有一个不是静态的页面,但不处理事件或可能需要代码隐藏类的某些内容时,它很有用)

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

  • 代码将更难理解,也不可能扩展
  • 在VisualStudio中很难管理,尤其是涉及事件、控件等时
  • 使用现有/缺失的控件会造成很大的痛苦。请参阅详细信息
如果您网站的多个页面共享相同的逻辑

  • 每个页面创建一个类,并从公共父类继承这些类,该父类将包含公共方法和属性,并且将从
    page
    class继承。您将获得广泛且易于理解的解决方案
  • 或者,如果案例是母版页的良好候选,则创建母版页
如果您使用的是.NET 4.0,则可能需要签出。它描述和
Request.Browser.MobileDeviceModel

您可以在代码背后或ASPX标记中加入一些逻辑,以检测您是否在移动设备上运行。这将允许您将所有代码放在一个文件中,但可以选择要显示的HTML元素,等等

我刚开始学习ASP.NET。据我所知,ASP.NET与旧式ASP的不同之处在于,页面的逻辑代码作为单独的文件存在于ASP页面中,而不是嵌入在ASP页面中

经典ASP和ASP.NET在很多方面都有所不同,主要的区别在于经典ASP页面(在大多数情况下)是过程性、基于脚本的非托管代码,而ASP.NET页面是编译、管理和事件驱动的。通常,ASP.NET页面将标记和服务器端代码分离为两个单独的文件,但这不是必需的。很有可能将服务器端代码放在块中的.aspx页面中

顶部的指令

告诉服务器文件中与页面关联的文件和类。代码隐藏类还具有对应于页面上每个控件的成员变量,并为代码隐藏文件中的代码提供了操纵控件的方法。首先,我的理解正确吗

是的,你理解得对

第二,是否可以使用两个单独的ASPX页面设置站点,其中两个页面的控件名称相同,并且都有指向相同文件和类的指令

是的,你可以这样做

你想这样做吗

可能不会。事实上,即使有两个单独的ASPX页面都从同一个基页继承,也没有什么强迫它们拥有相同的控件集。事实上,它们可能有不同的控件,页面将无错误地呈现。(如果试图访问代码隐藏中某个页面中不存在的控件,则会出现运行时错误。)

我想最终我想知道的是,是否有一种方法可以定义一个抽象页面?假设创建一个抽象页面定义,该定义表示页面必须具有控件“购物车列表”、“总购物车列表”,但能够具有从该抽象页面继承的多个页面

据我所知,没有办法做到这一点。不过,可能会有一个基本页面类,这是一个很好的实践,即使您手头没有这个特定场景,也可以使用它。有关创建和使用基页类的详细信息,请参阅:


快乐编程

+1。不知道移动设备检测现在在.NET框架本身中可用。+1表示“每页生成一个类,并从c继承这些类。”