请问asp.net高手aspx与cs的关系 20
在asp.net中一个页面有两个文件.aspx与.aspx.cs有人说aspx页面通过Inherits=“*.aspx.cs”继承自aspx.cs,那为什么如果在.asp...
在asp.net中一个页面有两个文件.aspx与.aspx.cs有人说aspx页面通过Inherits=“*.aspx.cs”继承自aspx.cs,那为什么如果在.aspx写下<asp:Button ID="Button1" runat="server" Text="Button" />时就能在aspx.cs中访问到Button1,这不是父类直接访问子类了吗。
另外,这两个文件在编译后会不会合并为一个类或一个文件
在cs文件中的类有一个partial关键字,表示这只是一个类的一部分,请问完整的类是什么样的? 展开
另外,这两个文件在编译后会不会合并为一个类或一个文件
在cs文件中的类有一个partial关键字,表示这只是一个类的一部分,请问完整的类是什么样的? 展开
5个回答
展开全部
呵呵,这个问题还重来没想过。
页面不是继承cs文件。aspx 和 .cs它们是一个数组 ,也就是说它们是平级的。
至于楼主问的.cs文件为什么能访问aspx里的id,button等等,只是在.cs类里面有个Page_Load事件,当用户一点击button,然后asp.net将整个aspx整个页面传回到cs,Page_Load中,编译cs时解析才能获得到,然后在将整个aspx页面解析成html文件一起传回页面,这也就是为什么当我们点击一下页面的控件整个页面会刷新一下的问题,之后才会出来什么ajax控件等技术。
至于后台有两个文件.cs和designer.cs. ASP不是把后台代码和前台显示代码放在一起的吗,那样维护起来有点乱,现在改变成asp.net就把它分开了,但是实际上它们还是在一类中,用了partial,编译时生成在一个文件存放在dll中的。
页面不是继承cs文件。aspx 和 .cs它们是一个数组 ,也就是说它们是平级的。
至于楼主问的.cs文件为什么能访问aspx里的id,button等等,只是在.cs类里面有个Page_Load事件,当用户一点击button,然后asp.net将整个aspx整个页面传回到cs,Page_Load中,编译cs时解析才能获得到,然后在将整个aspx页面解析成html文件一起传回页面,这也就是为什么当我们点击一下页面的控件整个页面会刷新一下的问题,之后才会出来什么ajax控件等技术。
至于后台有两个文件.cs和designer.cs. ASP不是把后台代码和前台显示代码放在一起的吗,那样维护起来有点乱,现在改变成asp.net就把它分开了,但是实际上它们还是在一类中,用了partial,编译时生成在一个文件存放在dll中的。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
展开全部
在编译的过程中,好像是要合成一个类,在。net3.5(还是3.0)以前吧,(VS2003包括以前),是继承的关系!!现在是合并的关系。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
.aspx是设计页面,而.cs是类页面,也就是说设计页面用到的类信息在这个页面里面,其实就是把设计和实现分离开来。
这两个文件本来就有不同职责,怎么会合并?但是肯定是要联合生成一个文件。
partial类是类的一部分,显然完整的类即是把所有此类的partial类合并在一起形成一个完整的类。
加上partial关键字就像是分页的功能,一张纸不够写还要写在另一张上,最后合起来就好了。
这两个文件本来就有不同职责,怎么会合并?但是肯定是要联合生成一个文件。
partial类是类的一部分,显然完整的类即是把所有此类的partial类合并在一起形成一个完整的类。
加上partial关键字就像是分页的功能,一张纸不够写还要写在另一张上,最后合起来就好了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
浏览器在编译时,先编译cs中的内容,然后编译aspx,你可以把aspx也看做是一种类,至于你说的那个继承其实不是的,.net在iss之前会先“捕获”你的页面进行编译,这时会把asp控件编译为html标准可以识别的控件类型,例如button会被编译成input~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在vs中,有很多朋友问起,在一个网站项目中的aspx和aspx.cs文件的关系,现在就归纳如下:
可以把aspx文件分成三部分:
l 有run=”server”属性的标签
l <% %>
l 标准HTML标签
再算上aspx.cs,一共是四块,我们分别来说他们的关系。
(图一)
我们来做个例子,结合上面的例子来看一下吧。
我们新建一个网站,页面如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="But_Yes" runat="server" Text="Button" />
<% int i = 10;
this.k = i;
%>
</div>
</form>
</body>
</html>
后参代码如下:
using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class _Default : System.Web.UI.Page
{
int j = 10; //私用成员
protected int k=100; //保护成员
protected void Page_Load(object sender, EventArgs e)
{
But_Yes.Text = "确定";
}
}
对这个例子我们来分析一下。
首先,我们要发布这个,会看到发布的文件有如下图所示:
(图二)
(图三)
我们主要看Default.aspx和bin中的这个dll,现在我们用反身工具Red Gate’s .NET Reflector来查看这个dll文件,发现在这个文件中,只有一个类_Defaule,如下图:
(图四)
好,我们已经把知识都准备好了,接下来分析图一。
按照图一的说法,编译成dll后,这个_Default这个类中应该有包括aspx.cs文件中的和aspx中有run=”server”属性的标签,当然,在类中就成为一个字段,并且是控件类型的字段了。我们在图四中可以看出,在aspx.cs中的j,k和aspx中的form1表单和But_Yes按钮都可以看到,但看不到<%%>中的i。aspx.cs和aspx中有run=”server”属性的标签是怎么样编译在一个类中的呢?原因在aspx.cs中,类_Default前的关键partial的功劳,我们都知道,这是一个分部类的关键字,就是可以把一个类分成两块来写,或分到两个文件中去写,aspx.cs是一部分,另一部分呢?另一部分就是在aspx中用run=”server”属性的签标,这些标签成为_Default类的一个字段,所以我们能在aspx.cs中能访问到这些标准。
我们接下来再看图一,在有请求到达服务端时,服务端就会把aspx中<%%>生成一个类,并且这个类是继承_Default这个类的,这样也就是说,在<%%>中的代码,能访问到aspx.cs中_Default中的非私有变量,也就是我们访问不到_Default类中的j,但能访部到该类中的k。
最后,_Default的子类和HTML代码在IIS和CLR的协作下,生成页面文件发送给客户端。
综上我们可以看出,aspx.cs文件和服务器端控件生成一个类,<%%>生成一个类,后面的类是在运行时生成,它是继承前面的类,最后再结合aspx文件中的HTML生成页面文件发送给客户。
(以上是在vs2008测试通过)
可以把aspx文件分成三部分:
l 有run=”server”属性的标签
l <% %>
l 标准HTML标签
再算上aspx.cs,一共是四块,我们分别来说他们的关系。
(图一)
我们来做个例子,结合上面的例子来看一下吧。
我们新建一个网站,页面如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="But_Yes" runat="server" Text="Button" />
<% int i = 10;
this.k = i;
%>
</div>
</form>
</body>
</html>
后参代码如下:
using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class _Default : System.Web.UI.Page
{
int j = 10; //私用成员
protected int k=100; //保护成员
protected void Page_Load(object sender, EventArgs e)
{
But_Yes.Text = "确定";
}
}
对这个例子我们来分析一下。
首先,我们要发布这个,会看到发布的文件有如下图所示:
(图二)
(图三)
我们主要看Default.aspx和bin中的这个dll,现在我们用反身工具Red Gate’s .NET Reflector来查看这个dll文件,发现在这个文件中,只有一个类_Defaule,如下图:
(图四)
好,我们已经把知识都准备好了,接下来分析图一。
按照图一的说法,编译成dll后,这个_Default这个类中应该有包括aspx.cs文件中的和aspx中有run=”server”属性的标签,当然,在类中就成为一个字段,并且是控件类型的字段了。我们在图四中可以看出,在aspx.cs中的j,k和aspx中的form1表单和But_Yes按钮都可以看到,但看不到<%%>中的i。aspx.cs和aspx中有run=”server”属性的标签是怎么样编译在一个类中的呢?原因在aspx.cs中,类_Default前的关键partial的功劳,我们都知道,这是一个分部类的关键字,就是可以把一个类分成两块来写,或分到两个文件中去写,aspx.cs是一部分,另一部分呢?另一部分就是在aspx中用run=”server”属性的签标,这些标签成为_Default类的一个字段,所以我们能在aspx.cs中能访问到这些标准。
我们接下来再看图一,在有请求到达服务端时,服务端就会把aspx中<%%>生成一个类,并且这个类是继承_Default这个类的,这样也就是说,在<%%>中的代码,能访问到aspx.cs中_Default中的非私有变量,也就是我们访问不到_Default类中的j,但能访部到该类中的k。
最后,_Default的子类和HTML代码在IIS和CLR的协作下,生成页面文件发送给客户端。
综上我们可以看出,aspx.cs文件和服务器端控件生成一个类,<%%>生成一个类,后面的类是在运行时生成,它是继承前面的类,最后再结合aspx文件中的HTML生成页面文件发送给客户。
(以上是在vs2008测试通过)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询