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>