防止剃刀转义属性

Prevent razor from escaping attributes

我们有一些带 ü 的 link 正在编码。例如,Einführung 被编码为:

Einführung

通常发生这种情况时,我可以使用 Html.Raw() 来修复它,但是在我们的规范 link 中使用时,razor 似乎不尊重 Html.Raw() .

我的标题是:

<title>@Html.Raw(ViewBag.Title)</title>

效果很好,不会对 ü 进行编码。

对于规范 link 我有:

<link rel="canonical" href="@Html.Raw(ViewBag.CanonicalUrl)" />

但这并不妨碍它对 ü 进行编码。

作为测试,我尝试了这个:

<link rel="canonical" href="ü" />

而且它没有对其进行编码,似乎证实了剃须刀正在执行此操作,而不是进一步的进程。

如何让它停止?

显然它与它是一个属性有关,并且它必须将属性编码为一个单独的步骤。

我能够通过 Html.Raw()'ing 整行来修复它:

@Html.Raw("<link rel='canonical' href='" + ViewBag.CanonicalUrl + "' />");

现在它不会将其视为属性,因此不会尝试对其进行编码。