直接调用javascript函数中的C#方法

问题描述:

如何直接在javascript函数中调用c#方法。 (例如page_load代码页面后面的方法)。请帮帮我。直接调用javascript函数中的C#方法

+1

什么是你想实现什么? – volpav 2011-05-26 07:01:52

+3

我的问题很清楚,不是吗? – Bahareh 2011-05-26 07:03:38

+2

奇怪!谁在投票这个问题? .NET开发者变得如此跛脚? – Nauman 2011-05-26 07:17:17

javascript将是客户端,page_load将在服务器端。我不认为你可以这样称呼这个方法。可能是你可以为这个方法创建一个单独的页面,并通过AJAX

拨打电话

要调用一个客户端事件的服务器端方法,你需要做到以下几点:

1-创建服务器端方法:

void DoSomething(...) { ... } 

2-实现它们取一个字符串参数System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(您可以将名称分配给这个参数的值):

public void RaisePostBackEvent(string eventArgument) 
{ 
     DoSomething(...); 
} 

3-编写一个脚本来触发回传:

function TriggerPostBack(control, arg){ 
    __doPostBack(control, arg); 
} 

4-呼叫需要时回传触发功能:

<a .... onclick="TriggerPostBack('control', 'arg')" .. /> 

您有多个选择,每个选择都有自己的优点和缺点。

  • 如果您想调用page_Load事件,只需重新加载页面:window.location.reload()并且您的页面的加载事件将被调用。
  • 如果您想以异步方式执行此操作,则必须使用XMLHttpRequest(即使用Ajax库)。您可以使用jQueryAjax.Net Professional或ASP.NET Ajax的更新面板。

简单的答案:你不能(至少page_load具体)!清楚了解什么是服务器端和什么是客户端代码。

调用服务器端方法的其他选项是使用AJAX!读。

您可以创建一个ASHX handler,在其中执行您要运行的C#方法,然后使用AJAX/jQuery来调用处理程序。

我特别不了解c#,但您的客户端与您的服务器端交流的好方法是通过RPC (Remote Procedure Call)实现。
可以说你使用JSON-RPC
首先,创建您的JSON对象,表示请求:

var request = { 
    "method": "echo", 
    "params": ["Hello JSON-RPC"], 
    "id": 1 
} 

其中方法表示您调用的函数名,
PARAMS代表的参数的阿雷指定的函数应采取,
ID是请求的对象的唯一标识符。

然后你想发送这个请求到服务器。这应该用ajax来完成。假设你有一个处理称为sendAjaxRequest Ajax请求是需要3个参数的函数:

  1. 服务器端有针对性的脚本
  2. 请求对象
  3. 回调处理响应

    sendAjaxRequest(scriptUrl,request,function(response){ 
        alert("the server responded with : "+response.result); 
    }); 
    

服务器收到请求,解释并执行方法与所需PARAMS并构造一个响应JSON对象:

{ 
    "result": "Hello JSON-RPC", 
    "error": null, 
    "id": 1 
} 

并将其发送回给客户机。

这是一个很好的做法,不管情况如何。

如果你想从JavaScript调用C#中的方法,我会使用一个web方法。下面提供了一个例子。我希望这有一些帮助。

ASP.NET - 以下HTML标记由一个ASP.Net文本框和一个HTML按钮组成。

<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
<input id="btnGetTime" type="button" value="Show Current Time" 
    onclick = "ShowCurrentTime()" /> 

JavaScript代码: - 当用户点击该按钮执行ShowCurrentTime JavaScript函数使一个AJAX调用GetCurrentTime的WebMethod。 TextBox的值作为参数传递给WebMethod。

<script type = "text/javascript"> 

function ShowCurrentTime() { 
$.ajax({ 
    type: "POST", 
    url: "CS.aspx/GetCurrentTime", //Type name of your class here e.g student.aspx/Method 
    data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: OnSuccess, 
    failure: function(response) { 
     alert(response.d); 
    } 
}); 
} 

function OnSuccess(response) { 
    alert(response.d); 
} 

</script> 

的的WebMethod - 下的WebMethod与当前服务器时间一并返回问候消息给用户。重要的是要注意的是,该方法被声明为静态(C#),这是必要的,否则该方法将不会从客户端jQuery AJAX调用中调用。

C#

[System.Web.Services.WebMethod] 
public static string GetCurrentTime(string name) 
{ 
    return "Hello " + name + Environment.NewLine + "The Current Time is: " 
    + DateTime.Now.ToString(); 
}