Sco*_*ier 5 asp.net escaping server-side-scripting
所以,目前,在asp gridview中,我有以下内容
<span id="btnEdit" runat="server" onclick="ShowEditCriteriaFilterDialog('<%#Eval("intSMCID")%>', '<%#Eval("strDescription")%>')" class="linkText">Edit</span>
Run Code Online (Sandbox Code Playgroud)
我实际上正在寻找的是引号/双引号的语法来实际完成这一点,因为我上面的内容不能正常工作.
首先,如果我用单引号封装整个onclick,而不在其中放入任何其他引号,它可用于渲染目的,但是当我在运行时实际单击链接时,没有任何反应.
如果我使用双引号封装整个onclick,就像ASPX元素的大多数属性一样,它不能正确呈现,并且在第一个<%#Eval%>语句之后的逗号之后的所有内容都显示为屏幕.这让我相信需要进行一些转义,以防止它认为点击处理程序在<%#Eval%>语句的中间某处结束.
请注意,如果我拿走runat ="server"并将其封装在双引号中,那似乎工作得更好......但是我需要跨度作为服务器端控件,我在页面中有很多其他功能我需要通过FindControl访问控件的代码
该Eval函数需要双引号,因此您必须将属性值括在单引号中。
您不能<%# ... %>在控件的单个属性值中混合静态内容和块runat="server",因此您需要在单个<%# ... %>块中构建整个字符串。
在块中的字符串中<%# ... %>,您可以使用'插入单引号:
编辑仅适用于.NET 4.0;在 2.0 中,它生成&apos;,这不起作用。使用双引号代替:
onclick='<%# string.Format(
"ShowEditCriteriaFilterDialog(\"{0}\", \"{1}\")",
Eval("intSMCID"), Eval("strDescription")) %>'
Run Code Online (Sandbox Code Playgroud)
根据您的数据,您可能还需要对 JavaScript 的字符串值进行编码:
onclick='<%# string.Format(
"ShowEditCriteriaFilterDialog(\"{0}\", \"{1}\")",
Eval("intSMCID"),
HttpUtility.JavaScriptStringEncode(Eval("strDescription", "{0}"))) %>'
Run Code Online (Sandbox Code Playgroud)
(为了可读性而包装的代码 - 它需要位于一行上。)
| 归档时间: |
|
| 查看次数: |
3635 次 |
| 最近记录: |