问题:
我有一个 Razor 应用 (.Net 9),可生成 SVG 图像。它像任何其他 HTML 一样使用 razor/Blazor 语法生成。问题出在生成 SVG<text>
元素时。
<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标了红色波浪线,提示<text></text> con't contian attributes
我试过,这会导致语法无效,因为在 Razor 文件中是特殊的。我也试过
@:<text x="0">Some text</text>
这是razor可以接受的,但是这会导致标签被删除,并且属性呈现为普通文本而不是SVG标签。
如何<text>
用 Razor 语法编写 SVG 元素?我不想恢复到 C# 和 HtmlString 等。
更新:这里缺少的关键点是我在@foreach 中使用它,但我起初并不认为这相关。
解决方案:
1.像下面这样将 SVG 内部的<text>再包一层
<text>
在Razor中就已且正常了,随不优雅,但可行。适合老旧版本
<text>
<text x="0">Some text</text>
</text>
2. 使用 @:,.net 9 + vs2022没有问题
@foreach (FormRectangle rect in Model.Form.Pages[0].Rectangles)
{
@: <text x="50" y="50">Some text</text>
}
相关链接:
https://developercommunity.visualstudio.com/t/tag-cannot-contain-attributes-error-when-using-svg/1705284