[英]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不支持它們。 但是,有一種解決方法。
解決方案將是:
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.