Databinder.Eval双引号

问题描述 投票:2回答:3

我遇到了一个问题,我想不出来怎么解决。我搜索了一些解决方案,但他们没有工作。所以,我有一个Datalist与ItemTemplate。我需要将google analytics on onclick事件添加到<a>标签中。我尝试添加onclick事件,如

 onclick="_gaq.push(['_trackEvent', 'Homepage', 'Click on',<%#DataBinder.Eval(Container.DataItem,"URL")%>']);" <br />

但我得到一个黄色的错误屏幕,并显示"...标签格式不正确"。&qout; 但没有成功。我也试过

onclick='<%# string.Format("_gaq.push(['_trackEvent','Homepage','Click on last awarded company','{0}']);", DataBinder.Eval(Container.DataItem, "URL") %>' <br />

但这也不工作。 你有什么办法可以解决这个问题吗?

asp.net quotes databinder
3个回答
1
投票

你真的应该在后面的代码中的 "OnItemDataBound "事件中做这种复杂的数据绑定。请看一下 相关MSDN页面.

<asp:DataList id="ItemsList" OnItemDataBound="Item_Bound" runat="server">

后面的代码。

public void Item_Bound(object sender, DataListItemEventArgs e)
{
 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 {
  // find your link
  HyperLink link = (HyperLink)e.Item.FindControl("MyFirstHyperLink");

  // so something nice with your link here, for example add attributes.
  string a = DataBinder.Eval(e.Item, "URL", "_gaq.push(['_trackEvent','Homepage','Click on last awarded company','{0}']);");
  link.Attributes.Add("onclick", a);
 }
}

免责声明:我没有实际测试过这段代码,所以你可能需要在这里和那里进行调整。它只是给你一个方向性的想法。


0
投票

请你试试下面的方法好吗?

<a  href="#" onclick="_gaq.push(['_trackEvent', 'Homepage', 'Click on','<%#DataBinder.Eval(Container.DataItem,\"URL\")%>']);">Test</a>

0
投票

我遇到过以下情况:我不得不重用一些函数,这些函数返回一个动态对象的集合,来自其他汇编。一般来说,可以通过使用[assembly: InternalsVisibleTo("Some.Assembly")]将动态对象发布到其他汇编中,因为dymanic对象是其汇编的内部对象。由于没有选择,我尝试了项目数据绑定方法的解决方案来添加脚本,但动态对象在那里无法访问,即使我使用Eval。但是Eval在标记中是可以工作的,那里就出现了引号标点的问题。我的解决方案是HTML转义。

onclick='<%# "doSomething(&apos;" + Eval("DataProperty") + "&apos;, this);"%>'
© www.soinside.com 2019 - 2024. All rights reserved.