2013-08-26 46 views
23

我想從JavaScript後面調用CsharpFunction代碼。我嘗試了下面的代碼。問題是,無論條件是True還是False,編譯器無論如何都會調用CsharpFunction!我如何控制它?如何從JavaScript調用C#函數?

JavaScript代碼:

if (Javascriptcondition > 0) { 
    <%CsharpFunction();%> 
} 

C#代碼隱藏:

protected void CsharpFunction() 
{ 
    // Notification.show(); 
} 

感謝您的幫助!

+2

你做的方式是錯誤的。你寫的代碼在服務器上執行,服務器不知道你的JavaScript條件。您可能想要使用AJAX。 – Nilesh

+0

對不起半烤的答案!那麼你可以用隱藏字段的形式發送你的條件,並且你可以檢查它的值是否調用該方法。 –

+0

你應該使用Ajax庫 – Rohit

回答

27

您可以使用Web方法和Ajax

<script type="text/javascript">    //Default.aspx 
     function DeleteKartItems() {  
       $.ajax({ 
       type: "POST", 
       url: 'Default.aspx/DeleteItem', 
       data: "", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        $("#divResult").html("success"); 
       }, 
       error: function (e) { 
        $("#divResult").html("Something Wrong."); 
       } 
      }); 
     } 

[WebMethod]         //Default.aspx.cs 
    public static void DeleteItem() 
    { 
    //Your Logic 
    } 
+4

您的示例調用c#代碼頁,而不是函數。 – vico

-4

你不能。 Javascript運行客戶端,C#運行服務器端。

其實你的服務器會運行所有的C#代碼,生成 Javascript。那麼,Javascript就在瀏覽器中運行。正如在評論中所說,編譯器不知道Javascript。

要調用服務器上的功能,就必須使用諸如AJAX之類的技術,如其他答案中所述。

+0

http://www.daniweb.com/web-development/aspnet/threads/31065/calling-c-function-through-javascript-in-asp.net –

+1

@Shyamsundarshah其中描述了AJAX和'__doPostback',它基本上是觸發服務器運行某些東西的方法。但從某種意義上說,你是對的。 –

0

如果您打算從客戶端進行服務器調用,則應該使用Ajax - 查看類似Jquery的內容,並使用$ .Ajax()或$ .getJson()調用服務器函數,具體取決於你想要執行的某種回報或行動。

1

服務器端函數位於服務器端,客戶端函數駐留在客戶端。 你可以做的是你必須設置隱藏的表單變量並提交表單,然後在頁面中使用Page_Load處理程序可以訪問變量的值並調用服務器方法。

更多信息,可以發現herehere

1
.CS File  
    namespace Csharp 
    { 
     public void CsharpFunction() 
     { 
     //Code; 
     } 
    } 

    JS code: 
    function JSFunction() { 
      <%#ProjectName.Csharp.CsharpFunction()%> ; 
    } 

注:JS函數調用時,你的CS頁面功能....項目的第一個名字然後命名的CS頁面的名稱空間,然後函數名