如何在asp.net中的数据绑定asp:hyperlink字段上插入单引号?

时间:2009-04-13 15:36:37

标签: .net asp.net

我正在尝试将ASP.NET超链接绑定到我的数据集的“Handle”列,如下所示:

<ItemTemplate>
    <asp:HyperLink ID="idTracking" runat="server"  NavigateUrl='<%# "javascript:SendPath(" + Eval( "Handle", "{0}") + ")" %>' Text="Test" />                                            
</ItemTemplate>

我希望NavigateUrl阅读:

javascript:SendPath('123abc')

但是,我不能介绍单引号。我该怎么做?

6 个答案:

答案 0 :(得分:2)

据我所知,超链接控件的text属性会自动编码,我总是只需将其作为标准的html锚标签。

就像这样。

<a href='<%# "javascript:SendPath(" + Eval( "Handle", "{0}") + ")" %>'>Your Link</a>

答案 1 :(得分:1)

为什么不这样做:

 <asp:HyperLink ID="idTracking" runat="server"  NavigateUrl='<%#  Eval("Handle", "javascript:SendPath(\'{0}\')") %>' Text="Test" />

答案 2 :(得分:1)

请务必转义您放入{0}地点的字符串中的任何单引号。我的建议是使用HTML锚标签而不是asp:HyperLink控件,如:

<asp:TemplateColumn ...>
  <ItemTemplate>
    <a href="javascript:SendPath('<%#Container.DataItem("Handle").ToString.Replace("'", "\'") %>');">Test</a>
  </ItemTemplate>
</asp:TemplateColumn>

答案 3 :(得分:1)

像这样写:

NavigateUrl='<%# "SendPath(\"" + Eval( "Handle", "{0}") + "\")" %>'

工作示例:

注意: \"在代码中写有"

<强>输出

NavigateUrl='SendPath("123")'

答案 4 :(得分:0)

转换为标准的html锚标记通常可以解决问题。但是,如果您必须使用asp控件可能是因为其他依赖项,\ x0027将不会干扰asp语法。

<asp:HyperLink ID="lnkDelete" runat="server" NavigateUrl='<%# "return confirm(\x0027Delete " + Eval(Container.DataItem, "name") + "?\x0027)" %>' Text="Delete" />

答案 5 :(得分:0)

我试图自己解决这个问题。以下是看起来有用的内容:

onmouseup=<% String.Format("alert('{0}')",Eval("Code"))  %>

注意开头缺少的单引号。否则,ASP.NET解析器将在=符号后面的单引号后面的单引号上扼制。 HTML语法检查器以绿色突出显示文本并说“必须在引号中包含属性值”,但它在生成的html中有效。