Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将TreelistEx中的图像绑定到Sitecore中的中继器_C#_Asp.net_Sitecore_Sitecore8 - Fatal编程技术网

C# 如何将TreelistEx中的图像绑定到Sitecore中的中继器

C# 如何将TreelistEx中的图像绑定到Sitecore中的中继器,c#,asp.net,sitecore,sitecore8,C#,Asp.net,Sitecore,Sitecore8,我不确定这是否是正确的方法,但仍在继续。 模板包含以下字段 Description [Rich Text] Images [TreelistEx] 用户将使用TreelistEx字段从媒体库中选择图片,该字段稍后将显示在旋转木马中。用户还应该能够编辑这些图像 我的代码没有显示任何图像 aspx: <div class="toggle_1bs"> <asp:Repeater ID="rpImages" runat="server" OnItemDataBound=

我不确定这是否是正确的方法,但仍在继续。 模板包含以下字段

Description [Rich Text]
Images      [TreelistEx]
用户将使用TreelistEx字段从媒体库中选择图片,该字段稍后将显示在旋转木马中。用户还应该能够编辑这些图像

我的代码没有显示任何图像

aspx:

<div class="toggle_1bs">
  <asp:Repeater ID="rpImages" runat="server" OnItemDataBound="rpImages_ItemDataBound"    
  ItemType="Sitecore.Data.Items.Item">
  <HeaderTemplate>
    <div id="1bs" class="owl-carousel">
  </HeaderTemplate>
  <ItemTemplate>
    <div class="item">
     <sc:Image ID="imgMain" Field="Images" runat="server" CssClass="img-full"  
     Item="<%#Container.DataItem %>"/>
    </div>
  </ItemTemplate>
  <FooterTemplate>
     </div>
  </FooterTemplate>
  </asp:Repeater>
</div>
private void BindData()
{
  //bind data to the repeater
  MultilistField offerImages = (MultilistField)offerDetails.Fields["Images"];
  rpImages.DataSource = offerImages.GetItems();
  rpImages.DataBind();
}

protected void rpImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
  var mainItem = (Item)e.Item.DataItem;

  if (mainItem != null)
  {
   var imgMain = (Image)e.Item.FindControl("imgMain");

   if(imgMain != null)
   {
     if (!string.IsNullOrEmpty(MediaManager.GetMediaUrl(mainItem)))
       imgMain.DataSource = MediaManager.GetMediaUrl(mainItem);

       //Response.Write(MediaManager.GetMediaUrl(mainItem));
    }
   }            
  }

使用treelist控件添加了两个图像,我可以看到这两个图像的html呈现(
)。

您没有
图像类型字段。这就是为什么不能像那样使用
sc:Image

您正在从TreeListEx获取媒体项列表

删除您的
rpImages\u ItemDataBound
并尝试以下操作:

<ItemTemplate>
    <img src='<%# Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl((Sitecore.Data.Items.Item)Container.DataItem)) %>' />
</ItemTemplate>

' />

您没有属于
图像类型字段的字段。这就是为什么不能像那样使用
sc:Image

您正在从TreeListEx获取媒体项列表

删除您的
rpImages\u ItemDataBound
并尝试以下操作:

<ItemTemplate>
    <img src='<%# Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl((Sitecore.Data.Items.Item)Container.DataItem)) %>' />
</ItemTemplate>

' />

它确实显示了图像,但用户无法编辑它们。为了使图像可编辑,我认为应该将每个图像添加为一个项目&然后使用
sc:image
。是这样吗。还有其他方法吗?因为您的中继器有一个项目类型,所以您可以像这样直接调用该项目。是否显示可编辑图像?另外,您可以调试这一行并检查项目。项目上是否有名为Images的字段?正如我在上面所写的,您不能将
sc:image
与树列表一起使用。您应该阅读有关编辑框架和自定义按钮的内容。这确实显示了图像,但用户无法编辑它们。为了使图像可编辑,我认为应该将每个图像添加为一个项目&然后使用
sc:image
。是这样吗。还有其他方法吗?因为您的中继器有一个项目类型,所以您可以像这样直接调用该项目。是否显示可编辑图像?另外,您可以调试这一行并检查项目。项目上是否有名为Images的字段?正如我在上面所写的,您不能将
sc:image
与树列表一起使用。您应该阅读有关编辑框架和自定义按钮的内容。