标记帮助程序字段编码错误

时间:2019-06-02 07:33:01

标签: c# asp.net-core .net-core

考虑以下标记帮助器(隐藏了不相关的部分)

[HtmlTargetElement("*", Attributes = "optional-field-checkbox")]
public class OptionalFieldCheckbox : TagHelper
{
    // [...]

    [HtmlAttributeName("checkbox-label")]
    public string CheckboxLabel { get; set; }

    public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        // [...]
    }
}

按如下所示调用上述标签帮助程序

<div optional-field-checkbox checkbox-label="L'évènement se déroule sur plusieurs jour ?">
    <!-- [...] -->
</div>

当我从CheckboxLabel方法的ProcessAsync属性中获取值时,得到了以下错误编码的字符串:

  

我在卢布尔雅那边玩儿吗?

预期值为

  

您会在卢布尔雅那边玩得开心吗?

我有:

  • 用Google搜索这个问题,看来这是由于TagHelper对值进行了双重编码,但我找不到任何解决方法
  • 尝试通过使用HtmlString作为CheckboxLabel的属性类型来绕过编码,但没有任何改变
  • 尝试使用WebUtility.HtmlDecodeWebUtility.UrlDecode找回原始字符串,但无济于事

如何通过ProcessAsync方法获取原始字符串,并且如果不可能,如何将字符串编码回其原始形式?

1 个答案:

答案 0 :(得分:1)

我认为您的cshtml剃刀文件是使用非UTF8编码保存的。

要更改编码,请单击文件>将yourfile.cshtml另存为...>使用编码保存;然后选择Unicode(UTF8)。

这可能会解决您的问题。