【问题标题】:How to pass parameters from Aspx to Javascript如何将参数从 Aspx 传递到 Javascript
【发布时间】:2015-01-29 17:35:49
【问题描述】:

我的问题很简单,我有一个用 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>

第一个按钮引发客户端错误。
第二个按钮提示字符串“”,而不是实际值。

我错过了什么??

【问题讨论】:

标签: javascript c# asp.net


【解决方案1】:

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

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

在Page_Load中,你可以放:

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

【讨论】:

    【解决方案2】:

    人们总是可以在服务器端设置一个隐藏表单域的值。然后,您可以在 javascript 中引用该隐藏字段。我发现这样做比弄乱 ASP.net 的时髦更容易

    【讨论】:

      【解决方案3】:

      好的,所以我找到了解决方案, 首先问题是并非所有属性都支持服务器端标签( 或 )。并且属性 OnClientClick 不支持它们。 但是有一个解决方法。

      1. 为 Button\ImageButton 添加一个 ID 并在服务器端运行 DataBind()。
      2. 使用数据绑定标签

      解决办法是:

      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代码:

      protected void Page_Load(object sender, EventArgs e)
      {
          btn1.DataBind();
      }
      

      现在在此元素上运行 DataBind() 后,可以使用服务器端数据绑定标签来传递参数

      【讨论】:

        猜你喜欢
        • 2012-02-10
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-18
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        相关资源
        最近更新 更多