[英]pass parameter to one function in the code behind in C# from javascript
我正在嘗試將參數從javascript傳遞給C#背后代碼中的一個函數
<script type="text/javascript">
$(document).ready(function () {
$("#some_id").click(function () {
var id = document.getElementById('HiddenField2');
var a = <%=btn_Click(id)%>;
});
});
</script>
<asp:HiddenField ID="HiddenField2" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "item_id")%>' />
code behind
public string btn_Click(String item_id)
{
/*do some thing*/
return null;
}
但是這段代碼總是給我上下文錯誤。 在此上下文中未定義該ID。 可以讓我知道我在做什么錯嗎?
首先, var id
是javascript, <%= %>
的代碼是C#。 您不能在像這樣的語言之間傳遞變量。
其次,在這種情況下, id
的值將是C#不能使用的DOM元素。 如果要在后面的代碼中獲取HiddenField2的值,則可以使用HiddenField2.Value
。
第三,由於你使用ASP.net,而不是使用jQuery的.click
處理程序,你應該使用onServerClick
屬性要連接按鈕點擊行為btn_Click
。
當您的瀏覽器將數據發回到asp.net時,C#中的按鈕單擊事件將由Postback觸發。我不明白您為什么在這里使用HiddenField,所以我的建議不考慮
解決方案1:首先可以將btn_Click中的代碼提取到HttpHandler(asp.net中的* .ashx),然后使用jQuery之類的js框架將Ajax發送到HttpHandler,由HttpHandler返回的數據可以由js處理
解決方案2:如果您在btn_Click中的代碼與您的頁面無關,只需使用ajax Get方法,數據將發送到您的頁面,您的數據返回的數據也將由js處理
最后,如果您不熟悉Web,我建議您學習或實現asp.net MVC,我認為它比asp.net Webform更加靈活。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.