防止剃刀转义属性
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 + "' />");
现在它不会将其视为属性,因此不会尝试对其进行编码。
我们有一些带 ü 的 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 + "' />");
现在它不会将其视为属性,因此不会尝试对其进行编码。