我正在尝试将ASP.NET超链接绑定到我的数据集的“Handle”列,如下所示:
<ItemTemplate>
<asp:HyperLink ID="idTracking" runat="server" NavigateUrl='<%# "javascript:SendPath(" + Eval( "Handle", "{0}") + ")" %>' Text="Test" />
</ItemTemplate>
我希望NavigateUrl阅读:
javascript:SendPath('123abc')
但是,我不能介绍单引号。我该怎么做?
答案 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中有效。