如何将参数从Aspx传递给Javascript

时间:2015-01-28 18:03:51

标签: javascript c# asp.net

我的问题很简单,我有一个在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;而不是实际值。

我错过了什么?

3 个答案:

答案 0 :(得分:0)

在服务器端代码中生成ClientClick代码。

(顺便说一句 - 你的按钮上没有ID ......)

在Page_Load中,您可以输入:

btn1.OnClientClick="alert('"  + this.divID.ClientID + "'); return false;";

答案 1 :(得分:0)

总是可以使用服务器端的值设置隐藏的表单字段。然后,您可以在javascript中引用该隐藏字段。我发现以这种方式更容易实现,而不是混乱ASP.net的funkiness

答案 2 :(得分:0)

好的,所以我找到了解决方案, 首先,问题在于并非所有属性都支持服务器端标记(&lt;%=%&gt;或&lt;%#%&gt;)。 OnClientClick属性不支持它们。 但是有一个解决方法。

  1. 添加Button \ ImageButton ID并在服务器端运行DataBind()。
  2. 使用数据绑定代码&lt;%#%&gt;
  3. 解决方案将是:

    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()之后,可以使用服务器端数据绑定标记来传递参数