簡體   English   中英

混合使用JavaScript和Razor語法

[英]Mixing JavaScript and Razor syntax

我一直在尋找如何將剃須刀和JavaScript混合在一起。 我發現了這樣的事情:

<script type="text/javascript">
var currentUser = null;
@if (User.Identity.IsAuthenticated) {
    <text>
        currentUser = '@User.Identity.Name';
    </text>
}
</script>

為什么名為currentUser的變量被<text></text>標記包圍? <text>標簽是什么意思? 如果我們省略該文本標簽,那么會發生任何錯誤嗎?

嗯,這就是剃須刀的工作原理。 它使用方括號和標簽開頭/結尾來區分生成的HTML中的C#代碼

當您打開方括號時,它會考慮以下代碼:

  • 遇到相應的結束括號
  • 標簽被打開。

然后,打開的標簽將被視為html,直到遇到@或相應的關閉標簽。 有時,您想從c#切換為HTML(或js),但又不想添加標簽...然后在其中添加特殊的標簽ID。 它沒有渲染,只是在這里告訴剃刀將rom C#切換到生成的輸出

使用<text>…</text>標記的原因是為了解決由於將兩種在語義上相同的語言混合在一起而導致的歧義問題。

如果要在Razor語法的C#if語句中指定動態Java腳本邏輯,並且在這些塊中具有Java腳本if語句,它將如何區分兩者的上下文?

問題是:不能;不能。 很有可能,程序員也不能。 <text>…</text>標簽是一個特殊的Razor塊(僅在C#塊內部)樣式轉義,它表示:絕對(可能)不是該塊中的C#代碼。

當您意識到可以在<text>…</text>塊內添加另一個轉義<text>…</text>時,事情會變得有些混亂。 像任何東西一樣,盡管您會謹慎使用它。 如果您在將兩者混合使用時遇到很多麻煩,並且無法弄清楚在何處添加文本塊,那么很可能您不應該在生產中使用它,除非您對它有所了解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM