Razor頁(yè)面Svg中for,if,foreach中添加text,提示<text></text>不能包含屬性的解決辦法
問(wèn)題:
我有一個(gè) Razor 應(yīng)用 (.Net 9),可生成 SVG 圖像。它像任何其他 HTML 一樣使用 razor/Blazor 語(yǔ)法生成。問(wèn)題出在生成 SVG<text>元素時(shí)。
<svg width="200" height="200">
<text x="50" y="50" fill="green">@text</text>
@if (test)
{
<text x="50" y="100" fill="red">@text</text>
}
</svg>
編輯器 將<text標(biāo)了紅色波浪線,提示<text></text> con't contian attributes
我試過(guò),這會(huì)導(dǎo)致語(yǔ)法無(wú)效,因?yàn)樵?Razor 文件中是特殊的。我也試過(guò)
@:<text x="0">Some text</text>
這是razor可以接受的,但是這會(huì)導(dǎo)致標(biāo)簽被刪除,并且屬性呈現(xiàn)為普通文本而不是SVG標(biāo)簽。
如何<text>用 Razor 語(yǔ)法編寫(xiě) SVG 元素?我不想恢復(fù)到 C# 和 HtmlString 等。
更新:這里缺少的關(guān)鍵點(diǎn)是我在@foreach 中使用它,但我起初并不認(rèn)為這相關(guān)。
解決方案:
1.像下面這樣將 SVG 內(nèi)部的<text>再包一層<text>在Razor中就已且正常了,隨不優(yōu)雅,但可行。適合老舊版本
<text>
<text x="0">Some text</text>
</text>
2. 使用 @:,.net 9 + vs2022沒(méi)有問(wèn)題
@foreach (FormRectangle rect in Model.Form.Pages[0].Rectangles)
{
@: <text x="50" y="50">Some text</text>
}
相關(guān)鏈接:

浙公網(wǎng)安備 33010602011771號(hào)