Databinder.Eval双引号

时间:2013-03-19 08:05:53

标签: asp.net quotes databinder

我有一个问题,我无法弄清楚如何解决它。我搜索解决方案,但他们没有工作。所以,我有一个带有ItemTemplate的Datalist。我需要在onclick事件上添加谷歌分析到< a>标签。我试图添加像

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

但是我收到一个黄色错误屏幕,显示消息“..标签格式不正确”。 我也尝试用&qout;替换双qoutes,但没有成功。我也试过了

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

但这也行不通。
你知道我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:1)

你真的应该在后面的代码中的“OnItemDataBound”事件中进行这种复杂的数据绑定。看看relevant MSDN page

<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);
 }
}

免责声明:我实际上没有测试过此代码,因此您可能需要在此处进行调整。它只是让你知道要走的路。

答案 1 :(得分:0)

你能在下面试试吗?

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

答案 2 :(得分:0)

我遇到了以下情况:我不得不重用一些函数,该函数从其他程序集中返回动态对象的集合。通常,可以通过使用[assembly:InternalsVisibleTo(“ Some.Assembly”)]将动态对象发布到其他程序集,因为动态对象在其程序集内部。没有选择的余地,我尝试了使用项目数据绑定方法解决方案来添加脚本,但是即使使用Eval,也无法在其中访问动态对象。但是Eval在标记中起作用,并且出现了引号/撇号问题。我的解决方案是HTML转义:

onclick='<%# "doSomething(&apos;" + Eval("DataProperty") + "&apos;, this);"%>'