作者:匿名
发布:3/12/2025 3:27:43 PM

问题:

我有一个 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

更新:2025-04-02
阅读:108
Posted by 1
0