Sitecore-参数模板中的图像字段

Sitecore-参数模板中的图像字段,sitecore,Sitecore,如果我在参数模板中有一个图像字段,那么在c#?中获取图像URL需要执行哪些步骤才能实现这一点,您必须了解sitecore图像字段如何将原始文本值呈现到img标记中。然而,有一个原因是,这不能在sitecore中开箱即用;参数模板用于定义有关渲染或子布局应如何渲染的信息。例如,您可以使用它来告诉列表控件显示一定数量的项目等。我建议不要对内容使用呈现参数,因为这将使内容编辑非常麻烦。如果您的目标是在页面本身以外的地方定义特定子布局的内容,请将其放在子项中。@mdresser对什么应该和不应该是呈现参

如果我在参数模板中有一个图像字段,那么在c#?

中获取图像URL需要执行哪些步骤才能实现这一点,您必须了解sitecore图像字段如何将原始文本值呈现到img标记中。然而,有一个原因是,这不能在sitecore中开箱即用;参数模板用于定义有关渲染或子布局应如何渲染的信息。例如,您可以使用它来告诉列表控件显示一定数量的项目等。我建议不要对内容使用呈现参数,因为这将使内容编辑非常麻烦。如果您的目标是在页面本身以外的地方定义特定子布局的内容,请将其放在子项中。

@mdresser对什么应该和不应该是呈现参数提出了有效的观点。然而,我并不认为Sitecore故意使参数模板中的图像字段难以使用。他们只是在现有的键值对呈现参数功能的基础上构建了参数模板功能

如果渲染参数模板上图像字段的名称为
BackgroundImage
,则可以使用以下代码获取所选图像的URL:

var-imageId=XmlUtil.GetAttribute(“mediaid”,XmlUtil.LoadXml(this.Parameters[“BackgroundImage]”);
MediaItem imageItem=Sitecore.Context.Database.GetItem(imageId);
backgroundImageUrl=MediaManager.GetMediaUrl(imageItem);
如果尚未为子布局提供提供Parameters属性的基类,则还需要添加以下内容:

私有名称值集合参数;
公共虚拟名称值集合参数
{
得到
{
if(this.parameters==null)
{
var parameters=this.Attributes[“sc_参数”];
this.parameters=string.IsNullOrEmpty(参数)
?新名称ValueCollection()
:WebUtil.ParseUrlParameters(参数);
}
返回此参数;
}
}

您可以使用两个单独的函数来检索您给子布局的参数模板中图像字段的值

第一步:获取与image参数关联的值。请使用下面的函数检索该值

//
///返回特定的参数值
///用于单行、多行文本字段、链接字段、图像字段等。
/// 
/// 
/// 
public MediaItem GetValueFromRenderingParameter(字符串参数名称)
{
var item=!string.IsNullOrEmpty(_params[parameterName])?_params[parameterName]:string.Empty;
如果(项==null)
{
返回null;
}
返回Sitecore.Context.Database.GetItem(item);
}
第二步:创建另一个函数,您可以在其中使用上述函数检索图像字段的值并适当地使用它。以下是相同的代码片段:

公共字符串呈现()
{
Sitecore.Data.Fields.ImageField ImageField=GetValueFromRenderingParameter(“图像参数名称”);
返回MediaManager.GetMediaUrl(imageField.MediaItem);
}

希望这能有所帮助。

我已经明白了这一点。我应该解释一下,我正在将现有站点转换为Sitecore。在当前的CMS中,用户可以向站点上的任何结构容器添加背景图像。图像总是只在一个地方使用,而不在其他任何地方使用。这就是我决定使用渲染参数的原因。我认为图像是“内容”,不应该是渲染参数。但是,就像在这个例子中一样,我需要为页面编辑器的作者提供一种为组件选择背景图像的方法。除了渲染参数之外,我还应该怎么做呢?