仓酷云
标题:
ASP.NET网页设计Razor内情之表达式
[打印本页]
作者:
飘灵儿
时间:
2015-1-16 22:20
标题:
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()[6 - 2]
@p.Name.Replace("ASPX", "Razor")[i++]
上面是一些不法的表达式,这些表达式只要部分("==>"以后的部分)会被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
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
作者:
小妖女
时间:
2015-1-24 17:58
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
作者:
第二个灵魂
时间:
2015-2-2 11:48
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
作者:
老尸
时间:
2015-2-7 19:21
逐步缩小出错代码段的范围,最终确定错误代码的位置。
作者:
再现理想
时间:
2015-2-23 05:00
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
作者:
小女巫
时间:
2015-3-7 06:16
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
作者:
活着的死人
时间:
2015-3-14 14:18
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
作者:
变相怪杰
时间:
2015-3-21 09:44
逐步缩小出错代码段的范围,最终确定错误代码的位置。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2