M.R*_*.R. 5 c# asp.net sitecore content-management-system sitecore6
我需要为该sc:Image字段添加一些自定义标记以提高SEO.这个标记不是该字段的属性,所以从代码隐藏,我尝试过这样的事情:
slideImage.Attributes.Add("ControlType", "C4Image");
slideImage.Attributes.Add("rel", relString);
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我在渲染输出中看不到任何内容.有没有办法做到这一点?
您需要使用"Parameters"属性在和控件上设置额外的属性.
你可以这样:
<sc:FieldRenderer ID="PageImage" runat="server" FieldName="ContentImage" Parameters="ControlType=C4Image&rel=relString" />
<sc:Image ID="SCPageImage" runat="server" Field="ContentImage" Parameters="ControlType=C4Image&rel=relString" />
Run Code Online (Sandbox Code Playgroud)
这将呈现如下:
<img width="1232" height="637" controltype="C4Image" rel="relString" alt="" src="~/media/Images/DEMO backgrounds/background2.ashx">
Run Code Online (Sandbox Code Playgroud)
您可以创建自己的类继承Sitecore.Web.UI.WebControls.Image并重写它,如下所示:
namespace My.Assembly.Namespace
{
public class MyImage : Sitecore.Web.UI.WebControls.Image
{
public virtual string RelAttribute { get; set; }
protected override void PopulateParameters(Sitecore.Collections.SafeDictionary<string> parameters)
{
base.PopulateParameters(parameters);
if (!String.IsNullOrEmpty(RelAttribute))
{
parameters.Add("rel", RelAttribute);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后注册命名空间并使用MyImage类:
<%@ Register tagPrefix="my" namespace="My.Assembly.Namespace" assembly="My.Assembly" %>
<my:MyImage runat="server" RelAttribute="reltest" Field="logo"/>
Run Code Online (Sandbox Code Playgroud)
您也可以使用所有标准属性sc:Image。my:MyImage该代码将生成img带有 rel 的标签<img rel="reltest" src="logo.jpg" ... />。
ControlType您也可以轻松扩展上面的代码以支持属性。