马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具)在由ASP.NET所谓前台挪用背景、背景挪用前台想到HTTP——实际篇中形貌了一下ASP.NET老手的三个成绩及相干的HTTP协定内容,发明了为何.NET程序员会问这些成绩而Java程序员很少(卒业前及年夜四练习都是在用Java),为了避免成为口水贴,提早声明一下,本文不是在说.NET与Java的好坏,纠结于此成绩的伴侣大概不合适看上面内容。
固然不是由于Java程序员不必ASP.NET控件,我以为.NET程序员很年夜一部分就输在.NET平台特别是VisualStudio的易用性上了,基本无需懂得HTTP协定,就能够经由过程拖拽控件做出网页,也不必懂得表单提交等最基础常识就能够做到页面和服务器通讯,乃至不晓得客户端与服务器在通讯。
Java就分歧了,IDE对照不智能,没有拖来拖往的控件,乃至Java初学者想写出“HelloWorld”都得花上一地利间研讨情况变量设置,不懂得表单和post就取不到input的值,想做网站起首得懂得Tomcat等服务器。没有甚么便当性可言的Java在强制我们进修,事变必需分明了,才干做出来,而.NET把这些都封装好了,拿来就可以用,良多在校年夜先生没学过Java的话都不晓得ASP.NETWebApplication怎样在离开VisualStudio的情形下运转,更不必说复杂的IIS设置了,基本不知服务器为什么物,被.NET宠坏了。
balabala说了这么多空话,意义就是.NET在以其易用性宠嬖我们,.NET程序员不克不及一向沉溺在我把XXX给做出来了就很满意的形态,而得有一种寻根究底的精力往研究其道理,信任已这么做的同砚在看到网上沸沸扬扬的.NET与Java好坏之争的时分城市报之于呵呵。言回正传,先看看实际篇中最初提炼的几个成绩。
服务器端怎样影响客户端元素与举动
这个成绩普通讲就是,怎样在服务器端修正页面DIV大概“挪用”JavaScript。假如懂得了实际篇中的HTTP协定的解说就应当晓得服务器修正页面DIV大概挪用JavaScript是不成能的,服务器只能给扫瞄器一个全新的页面(不思索Ajax)。那末是否是这个成绩就无解了呢?的确是!可是,但是能够使用服务器给扫瞄器全新页面这一特征来到达仿佛服务器修正了客户端页面的效果。
来实验一下在”服务器“端修正页面上的一个DIV为span
- <formid="form1"runat="server"><divid="test">改我</div><div><asp:ButtonID="btnModify"runat="server"Text="Modufy"OnClick="btnModify_Click"/></div></form>
复制代码 关于这类需求一样平常有两种思绪:
思绪一
把必要变动的中央做成服务器端控件,如许就能够在服务器端利用划定规矩,把想要的效果修正到全新的HTML文本中,然后传给扫瞄器,因而能够如许把页面修改一下,把欲修改部分用服务器端控件暗示
- <divid="test"><asp:LiteralID="ltrNew"runat="server">改我</asp:Literal></div><div><asp:ButtonID="btnModify"runat="server"Text="Modufy"OnClick="btnModify_Click"/></div>
复制代码 如许就能够在Button的Click事务处置程序中修正DIV中的笔墨了
- protectedvoidbtnModify_Click(objectsender,EventArgse){ltrNew.Text="改好了";}
复制代码 看到这里大概刚进门ASP.NET的同砚都要问了:您这是.NET科普嘛?如许确是对照弱,固然经常使用但良多和页面交互的中央必要JavaScript来处置,并非复杂的改动笔墨就能够做到的,这时候候就要换换思绪了
思绪二
原本应当客户端做的事变就应当让客户端来做。拿下面的例子,大概页面上已有JavaScript办法来处置修正DIV内笔墨了,欠的就是服务器端挪用了。
- functionmodifyDivLiteral(newliteral){//..............//一系列不是服务器改笔墨能处置的操纵,好比创立新的Array、改动Div背景色彩,挪用其他JavaScript函数//............document.getElementById(test).innerHTML=newliteral;}
复制代码 你看这个函数要做的事变相称庞大,没发经由过程服务器改笔墨做出来,怎样办!貌似服务器挪用JavaScript办法是个不错的门路,但后面的实际已告知了我们不成能,服务器给扫瞄器的时一个新的HTML文本,又不是挪用函数的句柄,可是假如我们往新的HTML页面里增加的挪用此办法的语句不就完成了吗?来看看我们怎样完成向新的HTML文本中增加挪用JavaScript的语句。
先在页面上增加一个literal控件用来寄存新追加的挪用JavaScript函数语句,至于放在最初是由于实行此语句的时分我们必要页面上的元素已筹办好,固然也能够经由过程jQuery的ready完成
- <formid="form1"runat="server"><divid="test">改我</div><div><asp:ButtonID="btnModify"runat="server"Text="Modufy"OnClick="btnModify_Click"/></div></form><scripttype="text/javascript">functionmodifyDivLiteral(newliteral){//..............//一系列不是服务器改笔墨能处置的操纵,好比创立新的Array、改动Div背景色彩,挪用其他JavaScript函数//............document.getElementById(test).innerHTML=newliteral;}</script><scripttype="text/javascript"><asp:LiteralID="ltrScript"runat="server"></asp:Literal></script>
复制代码
这时候候事变就复杂了,能够像方才那样修正笔墨一样修正Literal内容,区分只是我们必要增加的笔墨是JavaScript语句
- protectedvoidbtnModify_Click(objectsender,EventArgse){this.ltrScript.Text="modifyDivLiteral(改好了);";}
复制代码 如许点击按钮后效果是如许的,能够看到Literal部分已酿成了挪用函数的语句,如许DIV内容就被修正了,我们就从效果上完成的服务器“挪用”JavaScript
思绪二增强版
效果是有了但是如许写好丑恶啊,又得本人加个Literal,弄笑的是还得利用一对script标签包起来。
的确是,实在另有其他办法,好比挪用Response.Write、Page.Controls.Append啊等等,迥然不同,如许写最简单了解,一旦我们晓得为何如许就能够让服务器“挪用”JavaScript后,就能够用.NET知心的办法来做此事了,.NET团队已想到了开辟者会有如许的需求,特地计划了几个内置函数办理服务器端向页面注册剧本的成绩。
Page.ClientScript.RegisterClientScriptBlock
把剧本注册到页面顶部
Page.ClientScript.RegisterStartupScript
把剧本注册到页面底部
Page.ClientScript.RegisterClientScriptInclude
向页面注册剧本文件
关于这Sanger办法详细注释及用法能够往网上搜一下材料,前两个的区分是把剧本注册到页面的甚么地位,第三个能够把一个剧本文件引进页面,这个例子中应当利用Page.ClientScript.RegisterStartupScript,这时候候丑恶的包装就能够删往了
- <scripttype="text/javascript"><asp:LiteralID="ltrScript"runat="server"></asp:Literal></script>
复制代码 正想截屏呢,发明犯了一个毛病,这个办法把剧本注册到form的底端,而不是body,以是页面也要略微修正一下,把modifyDivLiteral办法往前放一放
- <formid="form1"runat="server"><divid="test">改我</div><div><asp:ButtonID="btnModify"runat="server"Text="Modufy"OnClick="btnModify_Click"/></div><scripttype="text/javascript">functionmodifyDivLiteral(newliteral){//..............//一系列不是服务器改笔墨能处置的操纵,好比创立新的Array、改动Div背景色彩,挪用其他JavaScript函数//............document.getElementById(test).innerHTML=newliteral;}</script></form>
复制代码
如许最初天生的页面是如许的,是否是到达预期目标了呢
未完待续
总而言之,因为扫瞄器并非把页面全文发给服务器,也就是说页面上的DIV及JavaScript语句并没有发送到服务器,在服务器端想修正DIV大概挪用JavaScript是不成能的,要末修正页面源码,让扫瞄器加载新的内容,到达更新目标,要末就像预定,大概点菜,向页面注进指令,让页面在扫瞄器端做某事。
原本想一篇说完呢,没想到最复杂的成绩内容就这么多,只好分篇说了,欲知客户端怎样”挪用“服务器端办法,且听下回分化
我见过net网页编程运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《net网页编程的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。 |