在javascript

时间:2016-12-01 17:07:53

标签: javascript c# html asp.net iteration

我发现自己不得不使用asp:repeater控件修改.ascx文件中列出的产品列表的遗留项目,每次名称时我都要添加一个Google跟踪代码管理器脚本(从现在开始的GTM)单击产品(HTML锚点)。

我的方法一直试图将产品的所有属性存储在标记内的javascript变量中,并在锚点onclick事件中调用它们,如下所示:

    <asp:Repeater ID="RpProductos" runat="server">
        <HeaderTemplate>
            <div id="ListadoProductos">
        </HeaderTemplate>
        <ItemTemplate>

            <script>
                var ruta = '<%# HtmlRutaPagina(Eval("IdProducto"),(string) Eval("Titulo")) %>';

                var producto = {
                    "name": "<%# Eval("Titulo")%>",
                    "id": "<%# Eval("IdProducto")%>",
                    "price": "<%#Eval("Precio")%>",
                    "brand": "<%# Eval("Autor")%>",
                    "category": "<%# HtmlTipoProducto((int)Eval("IdTipoProducto")) %>",
                    "variant": "",
                    "list": "Search Results",
                    "position": contadorProductos
                };

                window[<%# Eval("IdProducto")%>] = producto;
                impresionesGTM.push(window[<%# Eval("IdProducto")%>]);
                function clickProducto(ruta,producto) {
                    scriptGTMClick(ruta, producto);
                    window.location = ruta;
                }
            </script>

            <div class="ImgProducto">
                <a onclick="clickProducto(ruta, producto);" title='<%# Eval("titulo")%>'>
                    <img src='<%# HtmlRutaImg((int)Eval("idproducto")) %>' alt='<%# Eval("Titulo")%>' title='<%# Eval("Titulo")%>' width="80" /></a>
            </div>
            <h2><a href='<%# HtmlRutaPagina((int)Eval("idproducto"),(string) Eval("titulo")) %>' title='<%# Eval("titulo")%>'><%# Eval("titulo")%></a></h2>
            <div class="CajaLisCabecera">
                <p class="col25">Tipo: <span class="strong"><%# HtmlTipoProducto((int)Eval("idtipoproducto")) %></span></p>
                <p class="col75">Subcategor&iacute;a: <span class="strong"><%# HtmlTipoSubCategoria((int) Eval("idsubcategoria")) %> </span></p>
                <p>Autor: <span class="strong"><%# Eval("Autor") %></span></p>
                <div><%#Eval("DESCRIPCIONBREVE") %></div>
            </div>
            <hr />
        </ItemTemplate>
        <FooterTemplate>
            </div>
        </FooterTemplate>
    </asp:Repeater>

但无论我尝试多少种方法(甚至在de“onclick”属性中插入完整的产品对象,它总是给我错误“数据绑定方法,如Eval(),XPath()和Bind( )只能在数据绑定控件的上下文中使用。

我已经在这几个小时内苦苦挣扎了,虽然这里可能有些聪明人可能知道答案......关于我怎么处理这个问题的想法? 我已经考虑过在标签中存储所有需要的变量,但它并不是很干净。

作为最后一点,我更喜欢一种不涉及删除asp:repeater或修改大量服务器代码的解决方案,因为我必须重复这个过程,并且即使没有它也可以持续很长时间。 ..

0 个答案:

没有答案