飘灵儿 发表于 2015-1-16 22:20:35

ASP.NET网页设计Razor内情之表达式

来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!我们看一下之前例子中的代码:<li>@p.Name ($@p.Price)</li>是怎样剖析的。  当碰到"<li>"字符序列的时分,剖析器晓得正在剖析一个以"</li>"为停止标记的标志。然后标志剖析器在剖析到停止标记之前发明了一个"@"字符,就像"@foreach"一样,再次切换到代码剖析器。这时候和之前的剖析有些分歧,C#代码剖析器发明第一个标识符"p"时,它会反省这个标识符是否是C#的关头字;固然"p"并非C#关头字,以是代码剖析器进进"隐式表达式"形式。剖析隐式表达式的算法看起来是如许的:
  起首读取一个标识符,
  下一个字符是"("大概"["?
  是则读到婚配的")"大概"]",然后跳到2
  不是则持续3
  下一个字符是"."?
  是则持续4
  不是则停止表达式
  "."前面的字符是正当的C#标识符的入手下手?
  是则读取"."并跳到1
  不是则不读"."并停止表达式
  整体来讲就是:一个隐式表达式就是一个标识符,以后能够跟恣意数目的办法挪用("()")、索引表达式("[]")及成员会见表达式(".")。可是,除在"()"大概"[]"内里,是不同意空格存在的。比方,上面是一些正当的Razor隐式表达式:
@p.Name   
@p.Name.ToString()   
@p.Name.ToString()   
@p.Name.Replace("ASPX", "Razor")  
  上面是一些不法的表达式,这些表达式只要部分("==>"以后的部分)会被Razor以为是表达式。
@1 + 1 ==> @   
@p++ ==> @p   
@p    .   Name ==> @p   
@p.Name.Length C 1 ==> @p.Name.Length   
  这是我们为何必要另外一个表达式语法:"@(...)"的缘故原由,经由过程这个语法我们能够把任何想要的器材放到"()"内里,下面的例子用这个语法来暗示就是:
@(1 + 1)    
@(p++)    
@(p    .   Name)    
@(p.Name.Length - 1)   
  一旦我们考证了表达式,我们会把它传送到代码天生器中。当为"@foreach(){…}"天生代码的时分,会把代码写到天生的C#类文件中。关于表达式(不管是显现的大概是隐式的)来讲,这个历程有一点分歧,不像ASPX,这里只要一个把持布局"@",并没有"@="来辨别运转代码和要输入值的表达式,但这也是Razor的魅力地点。比方,当发明"@foreach"的时分,我们晓得"foreach"是C#中的一个关头字,以是这个块会被作为声明来实行;而发明"@p.Name"大概"@(1+1)"的时分,我们晓得它们是表达式,以是在实行这些语句以后输入了实行了局。
  总之:
  @if,@switch,@try,@foreach,@for,等是和"<%%>"一样的
  @p.Name,@(p++),@(1+1),等是和"<%:%>"一样的
  另外一个必要注重的中央就是表达式同等于"<%:"而不是"<%=""。在Razor中默许应当举行HTMLEncode处置,假如不想举行HTMLEncode处置,可使用IHtmlString接口。
  晓得剖析道理以后,上面我们再回到之前的代码:
<li>@p.Name ($@p.Price)</li>  当发明"@p.Name"以后,能够辨认出这是一个表达式,经由过程"("字符之前的空格剖析出这不是一个办法挪用,以后是文本标志""($",然后再次发明"@"以后将"@p.Price"剖析为表达式,最初以")"停止。
前天傍晚我发表了《Java的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。

分手快乐 发表于 2015-1-19 09:05:54

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

小妖女 发表于 2015-1-24 17:58:48

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

第二个灵魂 发表于 2015-2-2 11:48:05

最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。

老尸 发表于 2015-2-7 19:21:50

逐步缩小出错代码段的范围,最终确定错误代码的位置。

再现理想 发表于 2015-2-23 05:00:51

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

小女巫 发表于 2015-3-7 06:16:48

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

活着的死人 发表于 2015-3-14 14:18:32

asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!

变相怪杰 发表于 2015-3-21 09:44:49

逐步缩小出错代码段的范围,最终确定错误代码的位置。
页: [1]
查看完整版本: ASP.NET网页设计Razor内情之表达式