簡體   English   中英

如何將參數從Aspx傳遞到Javascript

[英]How to pass parameters from Aspx to Javascript

我的問題很簡單,我有一個用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>

第一個按鈕引發客戶端錯誤。
第二個按鈕警告字符串“ <%= this.divID.ClientID%>”,而不是實際值。

我想念的是什么??

在服務器端代碼中生成ClientClick代碼。

(順便說一句-您的按鈕上沒有ID ...)

在Page_Load中,您可以輸入:

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

總是可以在服務器端設置一個隱藏的表單字段,並帶有值。 然后,您可以在javascript中引用該隱藏字段。 我發現用這種方法比弄亂ASP.net的時髦更容易

好的,所以我找到了一個解決方案,首先要解決的問題是,並非所有屬性都支持服務器端標記(<%=%>或<%#%>)。 並且屬性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()之后,可以使用服務器端數據綁定標記來傳遞參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM