我正在尝试编写一个aspx页面,我将一些服务器端值传递给Javascript。服务器端标记从<%
更改为<%
<asp:TextBox
ID="txtOriginalNo"
runat="server"
onkeyup="javascript:EnterKeyPress(<%=ibtnSubmit.ClientID%>,event);"
TabIndex="1"
MaxLength="13"
></asp:TextBox>
这会在运行时转换为:
<input
name="txtOriginalNo"
type="text"
maxlength="13"
id="txtOriginalNo"
tabindex="1"
onkeyup="javascript:EnterKeyPress(<%=ibtnSubmit.ClientID%>,event);"
/>
谁能告诉我为什么会这样?
答案 0 :(得分:2)
您不能在服务器控件中使用服务器标记。从后面的代码设置属性:
txtOriginalNo.Attributes["onkeyup"] = "EnterKeyPress(" + ibtnSubmit.ClientID + ",event);"
注意:请勿在事件属性中使用javascript:
协议。当您将Javascript代码放入URL时使用它,如果您在事件属性中使用它,它将变为标签。
答案 1 :(得分:0)
您不能在服务器端控件的属性中使用<%= %>
。您需要以不同方式分配asp:TextBox
的{{1}}属性,例如:
onkeyup
答案 2 :(得分:0)
它被转换为保护您免受XSS(跨站点脚本)漏洞的影响。这是件好事。 ASP.NET中的服务器标记属性中不能包含大多数类型的服务器标记。
但是,您可以使用绑定,请参阅此问题528006 (Server tag in OnClientClick)以获取更多信息:
<asp:TextBox onkeyup="<%# CreateKeypressEvent(Eval(ibtnSubmit.ClientID)) %>">
</asp:TextBox>
protected static CreateKeyPressEvent(string source)
{
return "javascript:EnterKeyPress('" + source + "', event);";
}