2013-08-26 61 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页面的名称空间,然后函数名