程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Razor內幕之表達式

Razor內幕之表達式

編輯:關於ASP.NET

我們看一下之前例子中的代碼:<li>@p.Name ([email protected])</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++]

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved