来者有分,aspx和aspx.cs关系
aspx和aspx.cs关系:
aspx中有这样几种标签
<% %>,runat="server",<script> </script>
aspx.cs就是后台代码
我想问的是
1:第一次加载页面的时候,aspx中的控件,js函数,<% %> 中的内容以及后台代码的执行顺序
2:当回发的时候,aspx中的控件,js函数,<% %> 中的内容以及后台代码的执行顺序
[最优解释]
你在新建一个aspx页面的时候,会自动生成一个aspx.cs文件,aspx是一些前台的html的页面和js的代码
但是你的主要的逻辑代码会在aspx.cs里面,语法是C#.
我们把这个叫做后台代码,有时候也叫做服务端代码
但是html代码我们叫做前台代码,也叫做客户端代码。
从物理上说,是两个独立的文件。所以叫做代码后置。
[其他解释]
你可以去搜下asp.net 页面生存周期,够回答你的大部分问题了。
[其他解释]
我是沙发 再加点
第一种是在后台编码模式。
有两种写法,
方法一是在.aspx.cs中写代码。这样做的好处就是代码和页面内容分离,使代码更清晰。
方法二是aspx中具有 runat="server" 属性的 script 块中(单文件页)写代码。
例如:
本文下边<script runat="server"> 角本块 和 “后台CS文件”都有是后台编码模式。
后台参编码模式的代码是由脚本引擎来解释的。
第二种是在内嵌代码模式。
这种方式类似于旧风格的Asp页面。它是在aspx中将代码写在<%%>之间。
[其他解释]
后台代码是用来控制和生成页面内容的。
<% %> 里面的内容是在服务段输出页面内容时就执行的。
js是页面在浏览器里显示出来后,被事件触发,才能执行的。
现在,这个顺序明白没有?
[其他解释]
前提:<%# getSession(Container.Value)%>这句话能正确的执行,
页面加载的时候:getSession(Container.Value)已经执行完毕(虽然我不明白你怎么在后台调用前台的js脚本,却不用特别标明该方法,暂且认为你能调用吧),并以返回值作为showTab()的参数,写在页面上。
也就是说,当你的页面已经在浏览器里打开了,当你右键查看源代码,看到的这个地方,showTab()的括号里已经是getSession()的返回值。
点击查看光盘内容的时候,再执行你的showTab()方法(虽然你没给这个方法的定义,但我相信它是存在的,不然你也不会这么写)。
[其他解释]
aspx和aspx.cs关系
------------------
aspx 继承自 aspx.cs
[其他解释]
1:第一次加载页面的时候,aspx中的控件,js函数,<% %> 中的内容以及后台代码的执行顺序
后台代码 最先被编译
aspx中的控件 是 后台代码的一部分 由于是 partial class 的缘故 你没看到相关代码
<% %> 中的内容 会在请求时 和 后台代码编译后 的东东 生成一个类 继承自 后台代码
然后编译的结果是 纯html ,这个时候 包括js 函数
会由浏览器解析
[其他解释]
回发同上
[其他解释]
当你的页面已经在浏览器里打开了,当你右键查看源代码
看看document.getElementById('lblGpnr')里面的id =>"lblGpnr"
页面能找到吗?
再用alert();把strContent和gpnr的值弹出来看看,是正确的吗?
我估计答案都是否定的。。。。
[其他解释]
目前通用计算芯片是这样。。。
目前正在开发的新一代计算机处理器,
可不一定是这样哦,虽然我们不一定能见到这个应用
[其他解释]
照21楼的说法作一遍再说.
[其他解释]
您说的这些我都知道,我想问的是
我想问的是
1:第一次加载页面的时候,aspx中的控件,js函数,<% %> 中的内容以及后台代码的执行顺序
2:当回发的时候,aspx中的控件,js函数,<% %> 中的内容以及后台代码的执行顺序
[其他解释]
讲的挺好的!偶尔来看看
[其他解释]
把asp的代码写到cs里,html写到aspx里。也可以写到一起。
[其他解释]
问得很好。。。。我心里有个答案了。。不敢说。。
怕高人手持板砖拍死。。。等答案。。哈哈
[其他解释]
专门写个页面测试下,没想过这个
[其他解释]
to:丰云
function getSession(gpnr)
{
var s = getTable();
}
<igtbl:TemplatedColumn Key="" Width="120px" HeaderText="光盘内容" BaseColumnName="GPNR">
<CellStyle HorizontalAlign="Center"></CellStyle>
<HeaderTemplate>
光盘内容
</HeaderTemplate>
<CellTemplate>
<a href="#" onclick="showTab('<%# getSession(Container.Value)%>');">查看光盘内容</a>
</CellTemplate>
<Footer Key="">
<RowLayoutColumnInfo OriginX="3"></RowLayoutColumnInfo>
</Footer>
<Header Key="" Caption="光盘内容">
<RowLayoutColumnInfo OriginX="3"></RowLayoutColumnInfo>
</Header>
</igtbl:TemplatedColumn>
后台:
public string getTable(string aaa)
//相关操作
你觉得这个在页面首次被加载时的执行和当点击查看光盘内容时的执行顺序
[其他解释]
问题1:在iis加载始会编译.aspx和.cs文件为一体.如果已经预编译则一个aspx和一个dll,
加载时先加载加载cs页面中的Page_Load函数,后加载aspx中的控件和js函数,后.如果<% %>中的内容不是函数则会默认加载,如果是函数则在调用时加载.
问题2:回发执行顺序不变,只是在加载完页面后,执行回调函数.
[其他解释]
to:丰云
function getSession(gpnr)
{
var s = getTable();
}
<igtbl:TemplatedColumn Key="" Width="120px" HeaderText="光盘内容" BaseColumnName="GPNR">
<CellStyle HorizontalAlign="Center"></CellStyle>
<HeaderTemplate>
光盘内容
</HeaderTemplate>
<CellTemplate>
<a href="#" onclick="showTab('<%# getSession(Container.Value)%>');">查看光盘内容</a>
</CellTemplate>
<Footer Key="">
<RowLayoutColumnInfo OriginX="3"></RowLayoutColumnInfo>
</Footer>
<Header Key="" Caption="光盘内容">
<RowLayoutColumnInfo OriginX="3"></RowLayoutColumnInfo>
</Header>
</igtbl:TemplatedColumn>
后台:
public string getTable(string aaa)
//相关操作
你觉得这个在页面首次被加载时的执行和当点击查看光盘内容时的执行顺序
[其他解释]
document.getElementById('lblGpnr').innerHTML = gpnr;
[其他解释]
function showTab(strContent,gpnr)
{
alert("zou")
document.getElementById('lblGpnr').innerHTML = gpnr;
alert("走")
getSession(gpnr);
alert("OK")
var s = <%= getDt() %>;
alert(s)
}
现在发现一奇怪问题,如果注释掉红色的那句,所有代码都可以正常执行,如果存在红色那 句,则只能执行到alert("zou"),红色那句后面全都不执行
[其他解释]
alert(document.getElementById('lblGpnr'))
[其他解释]
哥们,像这种事自己调试一下多好。VS2008不是可以调试JS么,看比听更容易得到答案
[其他解释]
后台代码会先编译,并给前台的代码控件初始化,然后就页面呈现,至于js还是html先呈现,浏览器应该是按照先后顺序进行解析,如果js在head里边,就会在解析到head的时候加载js,如果在body里边,就会在加载到相应位置的时候解析
回发应该是一样的。
[其他解释]
UP 等待答案
[其他解释]
我来也,呵呵
[其他解释]
记得曾经老师说过:代码的执行顺序是从上到下一行一行执行的,
[其他解释]
关系?
就像,每个成功的男人后面都有个女人!
[其他解释]
Code-Behind结构,即代码在页面HTML的后面。
[其他解释]
现在比较想知道17楼和18楼描述的问题如何???
[其他解释]
.aspx比.aspx.cs少个.cs
[其他解释]
都是正确的,我主要想要gpnr的值
[其他解释]
是这样的
主要是code-behind 包含的
至于cs文件 你可以放在引用的任何地方
[其他解释]
问题是我要把gpnr的值在后台使用,对此我想到的办法是,先把gpnr的值给一个Label,然后后台获得这个Label的值...但是上面赋值那错啊,不执行
[其他解释]
都是正确的?
那gpnr的值不就是现成的吗??
[其他解释]
向各位来学习来了
[其他解释]
一般是先执行后台代码,然后将后台的变量填充<% %>,js是在页面加载的时候执行吧,如果js中也要用到后台全局的变量 ,那么也得先执行后台代码,给变量值才会给到js中。我一般写代码的时候会把js放到</body>的前一行。
[其他解释]
现在做wap开发,哎,不能用JS了。
[其他解释]
如果只是想保留值到后台,不需要显示出来,用hidden就行啦
页面写一个hidden:
<input type="hidden" id="saveStr" value=""/>
然后把document.getElementById('lblGpnr').innerHTML = gpnr;
改成:document.getElementById('saveStr').value = gpnr;
[其他解释]
不懂啊!没办法。
[其他解释]
up
[其他解释]
改成:document.getElementById("saveStr").value = gpnr;
呢??
这也太奇怪啦。。。。
在这里alert(document.getElementById("saveStr"));一下看看出什么东东??
是这里赋值不成功,还是你后台取hidden的地方不对?
[其他解释]
这个同理,我尝试过隐藏域,同样,在给隐藏域赋值的时候不执行,就是说下面的依然不执行
[其他解释]
还有,这个应该加上runat="server"吧,要不后台也获取不到值啊
[其他解释]
<input type="hidden" id="saveStr" name="saveStr" value=""/>//这句加到页面表单里面没?
function showTab(strContent,gpnr)
{
alert(gpnr);//这里正确执行没??
document.getElementById('saveStr').value = gpnr;//这里写对没??看仔细!!
alert("BBB");
getSession(gpnr);
alert("CCC");
var s = <%= getDt() %>;
alert(s)
}
[其他解释]
document.getElementById("saveStr").value = gpnr;
用双引号比较好,刚才拷过来,忘改了。
[其他解释]
加个name属性:
<input type="hidden" id="saveStr" name="saveStr" value=""/>
这样,后台可以用var tmpStr = Request.QueryString("saveStr").value;取得值。
[其他解释]
我改成这种赋值,你的意思是这样
document.getElementById("saveStr").value = gpnr;
alert(document.getElementById("saveStr")); //但这个不知道为何,根本就不执行
看我17楼说的,就是这样的问题,根本不执行
[其他解释]
我被折腾到不行咯。。。老婆喊我回家
接力!接力!!
[其他解释]
你直说你想做什么吧
[其他解释]
var s = <%= getDt() %>;
改下:
var s = "<%= getDt() %>";
[其他解释]
我确定写对了,这个问题我都研究一天了,不可能写错,我甚至挨个字母的看,但现在的问题又是alert("CCC");执行,但是下面的调用后台方法不执行!!!!!!!!!!!!
[其他解释]
继承的关系。
子类 aspx,父类 asp.cs。
[其他解释]
恩,是的
一直想总结一下 这方面的知识,总是偷懒或被别的事情打断。
[其他解释]
问题好象有点太全面了
比如CS文件中 PAG_LOAD事件是在页面加载时执行 而一些点击的onclick事件是在点击后才执行
又比如JS代码中 写在函数FUNCTION中的 要调用时才会执行 而直接写在<script>标签里的alert('113')这些代码是在页面加载后自动执行
<%%>中的代码 个人认为是在CS代码执行后再执行
[其他解释]
阿菲:是继承关系么
我前两天鄙视了这个题
[其他解释]
学习了 呵呵
[其他解释]
据我的理解,当一个页面请求后,应该先执行aspx文件中的页面指令(<%@...%>中的内容,页面指令提供了编译器编译该页面所需的信息,此处的指令信息提示为某种(例如C#)代码,将由C#编译器编译而不会让其它的编译器编译。C#代码属于服务器端代码,然后编译aspx.cs类中的信息。将所有的服务器端的信息实例化后,生成aspx对象,再经过CLR生成HTML流,经过aspnet_isapi.dll,IIS,显示在客户端,而JS代码是由浏览器中的编译器解释执行的,并是事件驱动的,所以JS代码在客户端是随着事件的发生而一条一条的解释执行......
本人也是新手...见解如有不妥之处....请赐教.....!!!
[其他解释]
[img=http://hi.csdn.net/space-3912536-do-album-picid-505180-goto-down.html][/img]
[其他解释]
先走服务端,再走客户端
[其他解释]
http://topic.csdn.net/u/20100308/10/ff3074f7-054a-4772-9b2d-aa16a5e0f5a5.html
[其他解释]
好问题,帮顶
------其他解决方案--------------------
ding
ding
[其他解释]
页面上有个链接,点击的时候触发了前台的一个js函数,我想在这个函数里调用后台的一个方法
[其他解释]
HTML源码文件那,无论是<% %>还是JS,还是HTML代码,都是从上到下逐行分析执行的
.cs文件那,这个执行的顺序与aspx页面生命周期有关:
ASP.NET 2.0中,执行的顺序是:
1,Init - 初始化,是否为动态控件就以此为分界,Init之前加入到控件树的控件其处理过程就和ASPX中静态声明的一致,因为静态控件也就是在Init前加入的。 (这个事件之后,页面上的所有元素及控件,都可以引用,并都有了默认值
2,LoadViewState - 加载ViewState。 (也就是加载视图,这个事件在页面回调,如点击提交时,返回服务器时特别有用)
3,ProcessPostData - 处理PostData,倒不如说是加载PostData,因为此阶段控件多数仅加载PostData,顺便判断PostData是否有改变,别的处理不在此阶段作。
4,Load - 加载,让ASP.NET程序员尽情发挥创意的地方,包括如何糟蹋ASP.NET这个框架。 这个事件我不想说,很经典
5,ProcessPostData Second Try - 第二次尝试处理PostData,和第一次所做的一样,不过第一次执行时已在控件树上的控件不会受到第二次打扰。
6,Raise ChangedEvents - 冒泡Changed类事件,这里指的是由于PostData变更而引起的Changed类事件。
7,Raise PostBackEvent - 冒泡PostBack类事件,除了Changed类以外的所有事件都在这里引发。
8,PreRender - 预呈现,这名字不怎么好记,改为“末日审判”或许会好一些,因为作为上帝的程序员在这里判决每一个变量的最终值。 (这里是ASP.NET工作进程把.aspx页面编译生成HTML文件向客户端输出前的事件,这里允许我们程序员最后对显示的HTML做最后的显示控件,如根据条件隐藏或显示一些控件之类的)
9,SaveViewState - 保存ViewState,判决执行的阶段,变量最终值在此保存,判入地狱的变量无权进入ViewState这个天堂并从此消失。 (保存好页面视图,比如回调后,再次到数据库读取数据显示时,要保留这些视图,当然,要显示控件的保存视图功能打开)
10,Render - 呈现,可能是生命周期中最无法解耦的一个阶段。真正的生成后的HTML文件向客户端输出
11,Unload - 卸载,有加载自然有卸载,但其实没有多少人知道它的存在。(这个事件一般我们ASP.NET的程序员用不到)
------------------------------------------------
上面可能说得笼统了些,这样吧,我以下简单些告诉楼主:
ASP.NET工作进程进行页面编译时,是这样的:
1,Init事件 - 初始化页面上的控件(如设置默认值等),这里,如果我们不在该事件内写代码,则默认执行空,然后页面分析器就会把.aspx页面的HTML源码逐行分析,初始化,这时,页面上的静态HTML元素及JS,CSS等都基本上OK,但是有一点是要注意的,就是页面中的<%# .... %>这样的语句,页面分析器是不会执行这语句块的,因为它是数据绑定的逻辑代码.这个语句块什么时候执行呢?
一般是在.cs文件里我们代码那调用,也就是我们常在以下事件调用:
protected void Page_Load(object sender, EventArgs e)
{
this.Page.DataBind();//这里,是调用了页面级的数据绑定,这样就会执行前面的绑定语句了
当然,如果是在像Grivew等数据绑定控件里的,我们也会手动调用 的,如
this.Gv_news.DataSource = dt;
this.Gv_news.DataBind();//这里就是调用该子控件里的数据绑定代码了
////
下面再说一下关于回调时的执行:
比如,我们点击一个提交按钮,如
protected void BtnDelete_Click(object sender, EventArgs e)
{
//删除所选项记录
这时候,页面回调,这时候,页面是怎么执行的呢?
回调时,上面页面生命周期里的那些事件中,
Init事件是不会执行了(ASP.NET工作进程很智能的,它能识别是回调还是第一次加载)
取出视图事件是要执行的,说白了就是取得客户端输入的一些内容之类的,然后,就是其它事件
在到达了
Page_Load事件时,这里是重点,请楼主要记住,这个事件无论是第一次加载还是回调,都要执行的,所以,如果你不想在回调时执行一些代码,请放在
if(!IsPostBack){} 条件块里
当执行完Page_Load事件后,
这时候,工作进程才真正地执行按钮事件,如
protected void BtnDelete_Click(object sender, EventArgs e)
{
//删除所选项记录
//执行完这个事件后,就又转回到页面生命周期的其它事件了,如保存视图呀,最终显示呀之类的事件,最后是输出界面的Render事件
这其中,那些取视图和存视图之类的事件,我们大多情况下是不用管它们的,因为ASP.NET工作进程很智能的,哪些视图是旧的,没有改变的,它是不会更新的,哪些是有改动的,什么的,它自己会知道的,不用我们关心
当然,如果你想客户端那动态添加一些控件之类的,就不得不考虑到这些事件了,这种的话,了解页面生命周期是很重要的
------------------------------
我只说这么多了,楼主有兴趣,自己多看下书,.NET要学的知识太多,并不像别人说的那么容易的,特别是玩一些高级功能和技巧时
[其他解释]
大牛出现!!
[其他解释]
index.aspx 和 index.aspx.cs 两者有继承和被继承的关系,index.aspx.cs是父,index.aspx是子
当请求index.aspx的时候会先执行index.aspx.cs的onLoad事件。
下面这个我不太确定,如果错了还望不要丢板砖。
前台页面应该是解释性的,服务端响应后从上往下依次执行。
[其他解释]
对代码反编译一下就可以看到aspx继承自aspx.cs ,也可以在.cs中定义一个privite方法,在aspx中就无法访问了,这样就可以说明问题了。
[其他解释]
页面上有个链接,点击的时候触发了前台的一个js函数,我想在这个函数里调用后台的一个方法
------------------------------------------------
关键是 想在这个函数里调用后台的一个方法
你想调用 一个什么样的方法, 不同的方法的 调用方式大相径庭
[其他解释]
说的挺对 LZ应该去了解下页面生命周期 基本上 你的问题就解决了
[其他解释]
就是一个正常的 返回string类型的方法,或者无返回值也好
[其他解释]
http://topic.csdn.net/u/20090403/14/EFD55D3F-324A-45BB-BF96-ACDCA46A1121.html
[其他解释]
null