首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Razor 內幕:隱含運算式解析規則與合法形式

     編輯:關於ASP.NET

前言

Razor 隱含運算式 (@p.Name) 解析演算法精確定義了何種字元序列屬於運算式。本文詳述解析規則與合法/非法形式對照。

解析演算法

  1. 讀取一個識別符 (如 p)。
  2. 下一字元是 ( 或 [?是 → 讀取至匹配 )/] → 回步驟 2。
  3. 否則,下一字元是 .?是 → 讀取 . 並要求後續為合法識別符起始 → 回步驟 1。否則 → 結束運算式。

合法範例

@p.Name
@p.Name.ToString()
@p.Name.ToString()[6 - 2]
@p.Name.Replace("ASPX", "Razor")[i++]

特點:識別符 + 任意數量方法呼叫/索引/成員存取,**運算式內不允許空白字元** (括號/括弧內除外)。

非法範例

@p .Name          // 空白導致結束
@p.Name .ToString()
@p.Name ( )       // 空白
@p.Name[ 0 ]      // 空白

設計考量

  • 無空白限制簡化解析器,避免與 HTML 屬性值混淆。
  • 複雜運算式建議改用顯式運算式 @(p.Name.ToString()),括號內允許任意空白與完整 C# 語法。

總結

隱含運算式以「識別符 + 無空白鏈式存取」為核心規則,兼顧簡潔與解析確定性;超出範圍改用顯式運算式即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved