所以,目前,在asp gridview中,我有以下
<span id="btnEdit" runat="server" onclick="ShowEditCriteriaFilterDialog('<%#Eval("intSMCID")%>', '<%#Eval("strDescription")%>')" class="linkText">Edit</span>
我实际上正在寻找的是引号/双引号的语法,以正确地实现这一点,因为我上面的内容不能正常工作。
首先,如果我用单引号封装整个onclick,而不在其中放入任何其他引号,它可以用于渲染目的,但是当我在运行时实际单击链接时,没有任何反应。
如果我用双引号封装整个onclick,就像ASPX元素的大多数属性一样,它不能正确呈现,并且在逗号之后的所有内容都在第一个&lt;%#Eval%&gt;之后。语句在屏幕上显示为实际文本。这让我相信需要进行一些转义,以防止它认为点击处理程序在那个&lt;%#Eval%&gt;中间某处结束了。言。
请注意,如果我带走runat =“server”并将其封装在双引号中,那似乎效果更好......但是我需要跨度作为服务器端控件,我有很多其他功能在页面的代码后面我需要通过FindControl访问控件
答案 0 :(得分:0)
我认为解决方案是
onclick='<%# "ShowEditCriteriaFilterDialog(" +Eval("intSMCID") + ","+ Eval("strDescription") +" );" %>'
答案 1 :(得分:0)
Eval
函数需要双引号,因此您必须将属性值包装在单引号中。
对于具有<%# ... %>
的控件,您不能在单个属性值中混合静态内容和runat="server"
块,因此您需要在单个<%# ... %>
块中构建整个字符串。
在 <%# ... %>
块的字符串中,您可以使用'
插入单引号:
编辑仅适用于.NET 4.0;在2.0中,它生成&apos;
,这将无法正常工作。改为使用双引号:
onclick='<%# string.Format(
"ShowEditCriteriaFilterDialog(\"{0}\", \"{1}\")",
Eval("intSMCID"), Eval("strDescription")) %>'
根据您的数据,您可能还需要对JavaScript的字符串值进行编码:
onclick='<%# string.Format(
"ShowEditCriteriaFilterDialog(\"{0}\", \"{1}\")",
Eval("intSMCID"),
HttpUtility.JavaScriptStringEncode(Eval("strDescription", "{0}"))) %>'
(为了便于阅读而包含的代码 - 它需要在一行上。)