首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

ASP.NET MVC Razor 嵌套布局中 if 條件解析報錯

     編輯:程式設計疑難解答

現象

三層嵌套布局:_Layout1 → _Layout2 → View。_Layout2 中 @RenderSection("script2", false) 位於 JS 函數內。View 填充 script2 時,直接寫 @if (cond) { ... } 報錯;包裹 @{ <text> ... </text> } 正常。

原因

Razor 解析器在非標準標簽上下文(如 JS 字符串/函數體內)難以正確識別 @if 代碼塊邊界。

建議

  1. 避免在 JS 代碼中放置 Razor Section,改為:
    View 中直接寫 <script> ... @if(cond){ @:var x=1; } </script>,或用 @Html.Raw 輸出 JS 變量。
  2. 若必須用 Section,確保 Section 內容為完整 HTML/JS 片段,並在 View 中用 @section script2 { <text> ... </text> } 包裹。
  3. 重構:將條件邏輯移至後台計算好 ViewModel,View 僅渲染結果。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved