我刚刚开始学习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”,但是然后能够有多个页面从这个抽象页面继承吗?
答案 0 :(得分:8)
是的,两个页面可以从同一个类继承。就像它可以直接从Page
类继承,甚至没有关联的.cs文件(当你的页面不是静态的,但不处理事件或可能需要代码隐藏类的东西时很有用) )。
在实践中,我认为直接从同一个类继承几个ASP.NET页面并不是一个好主意。这不常见,所以:
如果您网站的多个页面共享相同的逻辑,
Page
类。您将获得广泛且易于理解的解决方案。答案 1 :(得分:3)
如果您使用的是.NET 4.0,则可能需要检查this。它描述了Request.Browser.IsMobileDevice
和Request.Browser.MobileDeviceModel
。
您可以将一些逻辑放入代码隐藏或ASPX标记中,以检测您是否在移动设备上运行。这将允许您将所有代码放在一个文件中,但可以选择要显示的HTML元素等。
答案 2 :(得分:3)
我刚刚开始学习ASP.NET。根据我的理解,ASP.NET与旧式ASP的不同之处在于,页面的逻辑代码存在于单独的文件中,而不是嵌入在ASP页面中
经典ASP和ASP.NET在很多方面有所不同,主要方式是经典ASP页面(大多数情况下)是基于脚本的过程非托管代码,而ASP.NET页面是编译,管理的,和事件驱动。通常,ASP.NET页面将标记和服务器端代码分成两个单独的文件,但这不是必需的。很可能将服务器端代码放在.aspx页面的&lt; script runat =“server”&gt;中。块。
顶部的指令......
&lt;%@ Page Title =“”Language =“C#”MasterPageFile =“〜/ Styles / Site.Master”AutoEventWireup =“true”CodeBehind =“MyShoppingCart.aspx.cs”Inherits =“TailspinSpyWorks.MyShoppingCart”% &GT;
告诉服务器文件中的哪个文件和哪个类与页面相关联。类后面的代码还具有与页面上的每个控件相对应的成员变量,并为代码隐藏文件中的代码提供了一种操作控件的方法。首先,我能正确理解吗?
是的,你理解正确。
第二,网站是否可以设置两个具有相同名称控件的独立ASPX页面,这两个页面都有一个指向同一文件和类的指令?
是的,你可以这样做。
你甚至想要这样做吗?
可能不是。实际上,即使有两个单独的ASPX页面都继承自同一个基页,也没有任何东西可以强制它们拥有相同的控件集。实际上,它们可以有不同的控件,页面将呈现而不会出错。 (如果您尝试访问其中一个页面中不存在的代码隐藏中的控件,则会出现运行时错误。)
我想最终我想知道的是,是否有办法定义抽象页面?假设创建一个抽象页面定义,说明页面必须有控件“cart_list”,“total_lbl”,但是然后能够有多个页面从这个抽象页面继承吗?
没有(据我所知)实现这一目标的方法。然而,可能接近的是拥有一个基本的Page类,即使你手头没有这个特定的场景,也可以使用它。有关创建和使用基页类的更多信息,请参阅:Using a Custom Base Class for your ASP.NET Pages' Code-Behind Classes。
快乐编程!
答案 3 :(得分:1)
是的,没有。
您可以对不同的页面使用相同的类,但页面控件和类中的变量之间的绑定并不严格。
控件引用将简单地分配给变量(如果它们存在且具有匹配类型),但您不能对页面必须包含某些控件进行任何限制。但是,您可以检查变量是否已分配,或者它们是否包含代码中的第一个空引用。
在某些罕见的场合,我在不同的页面上使用了同一个类,但这不常见。通常这样做几乎没有什么好处,如果你想重用页面中的代码,你可以将它放在一个类文件中并从单独的页面中使用它。