簡體   English   中英

通過JavaScript將參數傳遞給C#背后代碼中的一個函數

[英]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.

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