ALTテキストがエンコードされない


解説

Web またはXSL Imageコントロールを使用した場合、Image フィールドのALTテキストの内容はHTML エンコードされません。

提供されたALTテキストに無効な文字が含まれている場合、生成されたHTMLは無効となります。

解決策

Webコントロールの場合:

<sc:Image id="imageControl" Field="Image" runat="server" />

Altテキストを以下のコードでエンコードします:

public void Page_Load(object obj, EventArgs eventArgs)
{
    if(!IsPostBack)
    {
        var imageField = Sitecore.Context.Item.Fields["image"];         
        if(FieldTypeManager.GetField(imageField) is Sitecore.Data.Fields.ImageField)
        {
            string altText = ((Sitecore.Data.Fields.ImageField)imageField).Alt;
            imageControl.Alt = HttpUtility.HtmlEncode(altText);
        }
    }
}

XSLコントロールの場合:

xslレンダリングファイルの<sc:image ... />タグを次のようなコードに置き換えてください:

<img src="{sc:fld('Image',.,'src')}" >
  <xsl:attribute name="alt">
    <xsl:value-of select="sc:fld('Image',.,'alt')" disable-output-escaping="yes"/>
  </xsl:attribute>
</img>