簡體   English   中英

使用帶有參數的ASP.Net中的Javascript調用C#方法

[英]Call C# Method using Javascript from ASP.Net with Parameters

誰能幫助我在帶有參數的aspx頁面中使用Javascript背后的代碼中調用C#方法?

這是我調用了sample()方法的javascript:

<script type="text/javascript">
    function showModal(arr, hey) {
        '<%=sample(arr,hey)%>';
     }
</script>

我有兩個具有以下參數的c#代碼被調用:

protected string sample(int i, string a)
{
    lblsample.Text =i + "," + a;
    return lblsample.Text;
}

這給我一個關於Javascript代碼的錯誤:

arr does not exist in the current context

順便說一句,當單擊圖表中的特定條形時,將執行javascript。 我使用Fusioncharts。

以下是有關如何調用參數並將參數傳遞給ShowModal javascript函數的代碼:

xmlString.AppendFormat("<set label='{3}' value='{1}' tooltext='Employee: {0}{2}Hours:{1}' link='j-showModal-{1}, {1}'/>", dt.Rows[i][1].ToString(), dt.Rows[i][2].ToString(), "{br}", dt.Rows[i]["EmpNameDot"].ToString()); 

擴展David的答案:呈現頁面后,有多種方法可以從客戶端訪問服務器端。 部分列表,無特定順序:

  • WebMethod
  • UpdatePanel
  • ASMX Web服務
  • WCF Web服務
  • Web API
  • SignalR

選擇哪種取決於您要實現的目標。 無論如何,您都需要發出AJAX請求(可以使用jQuery非常簡單地完成),並處理JavaScript代碼中的返回值。 似乎您正在使用WebForms UpdatePanel是使用WebForms方法。 UpdatePanel為您處理了ajax調用,您只需要正確設置即可。

編輯:如果您對問題進行了更好的解釋,然后再編輯,那么您也許會提供更實用的答案。

您不能像這樣混合使用客戶端和服務器端代碼。 請求頁面時,服務器端代碼在服務器上運行。 並且那時它不了解任何客戶端事件或信息。

無論如何,為什么要嘗試在服務器端代碼中執行此操作? 您要做的就是在頁面元素上設置一些文本。 只需使用JavaScript即可,因此您不必發回服務器。 像這樣:

function showModal(arr, hey) {
    document.getElementById('lblsample').textContent = arr + ',' + hey;
}

請注意,這假設您的HTML中的客戶端 id值為lblsample 事實並非如此。 您必須實際檢查HTML並進行檢查。 不過,有一種解決方法可以幫助服務器端代碼。 您可以嵌入一些服務器端代碼,使其在頁面加載時運行一次,這將發出該元素的客戶端id

function showModal(arr, hey) {
    document.getElementById('<%=lblsample.ClientID%>').textContent = arr + ',' + hey;
}

暫無
暫無

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

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