Почему я получаю один и тот же идентификатор изображения из разных представлений изображения в ретрансляторе?
У меня есть ретранслятор, который показывает слайды изображений из папки, так что при нажатии на текущее изображение на слайде открывается страница продукта, которая показывает подробную информацию о выбранном изображении. Между тем, у меня есть productModel, который перечисляет все изображения из базы данных, так что при нажатии на любое из изображений открывается страница продукта изображения, как указано выше. Теперь меня беспокоит то, что гиперссылка, которую я прикрепил к ретранслятору, постоянно открывает одну и ту же страницу продукта с другого изображения, которое появляется на ретрансляторе. Может ли кто-нибудь помочь мне указать, что я делаю неправильно? Я буду вам очень благодарен!
Что я уже пробовал:
<ul class="bjqs"> <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <ItemTemplate><li> <asp:HyperLink ID="link" runat="server"> <img src='<%# DataBinder.Eval(Container.DataItem,"Value") %>' title='<%# (DataBinder.Eval(Container.DataItem,"Text").ToString()).Split('.')[0].ToString() %>' alt=""> </asp:HyperLink></li> </ItemTemplate> </asp:Repeater> </ul>
с фоновым кодом:
<pre lang="C#">protected void Page_Load(object sender, EventArgs e) { FillPage(); string[] filePaths = Directory.GetFiles(Server.MapPath("~/pages/Management/Images/Products/")); List<ListItem> files = new List<ListItem>(); foreach (string filePath in filePaths) { string fileName = Path.GetFileName(filePath); files.Add(new ListItem(fileName, "/pages/Management/Images/Products/" + fileName)); } Repeater1.DataSource = files; Repeater1.DataBind(); } } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { ProductModel productModel = new ProductModel(); List<Product> products = productModel.GetAllProducts(); foreach (Product product in products) { Panel productPanel = new Panel(); HyperLink hp = (HyperLink)e.Item.FindControl("link"); hp.NavigateUrl = "~/pages/Product.aspx?id=" + product.ID; } }</pre>
ZurdoDev
Почему вы заранее обсуждаете продукты в событии ItemDataBound? ItemDataBound срабатывает для каждого элемента в вашем ретрансляторе. Вам нужно установить гиперссылку один раз, а не в цикле foreach.