我的问题很简单,我有一个在Asp.Net开发的网站。 我不想将服务器(aspx文件)中的参数传递给客户端(javascript文件)。
假设我有一个asp:Button,当OnClientClick事件触发时,我想用服务器中的参数调用javascript函数。
让我们简化示例,让我们说这是我的网页:
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form id="form" runat="server">
<div runat="server" id="divID" >div text here...</div>
<br />
<asp:Button runat="server" text="click1"
OnClientClick='<%= "alert(" + this.divID.ClientID + "); return false;" %>'
/>
<asp:Button runat="server" text="click2"
OnClientClick="alert('<%= this.divID.ClientID %>'); return false;"
/>
</form>
</body>
</html>
第一个按钮抛出客户端错误 第二个按钮提醒字符串&#34;&lt;%= this.divID.ClientID%&gt;&#34;而不是实际值。
我错过了什么?
答案 0 :(得分:0)
在服务器端代码中生成ClientClick代码。
(顺便说一句 - 你的按钮上没有ID ......)
在Page_Load中,您可以输入:
btn1.OnClientClick="alert('" + this.divID.ClientID + "'); return false;";
答案 1 :(得分:0)
总是可以使用服务器端的值设置隐藏的表单字段。然后,您可以在javascript中引用该隐藏字段。我发现以这种方式更容易实现,而不是混乱ASP.net的funkiness
答案 2 :(得分:0)
解决方案将是:
aspx代码:
<div runat="server" id="divID" >div text here...</div>
<asp:Button ID="btn1" runat="server" text="click1"
OnClientClick='<%# "alert(" + this.divID.ClientID + "); return false;" %> '/>
cs code:
protected void Page_Load(object sender, EventArgs e)
{
btn1.DataBind();
}
现在在对此元素运行DataBind()之后,可以使用服务器端数据绑定标记来传递参数