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

时间:2011-05-26 07:01:03

标签: c# javascript

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

7 个答案:

答案 0 :(得分:2)

要在客户端事件上调用服务器端方法,您需要执行以下操作:

1-创建服务器端方法:

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

2-实现带有一个字符串参数的System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(您可以将名称指定给该参数的值):

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

3-编写脚本以触发回发:

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

4-需要时调用PostBack触发功能:

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

javascript将是客户端,page_load将是服务器端。我不认为你可以这样称呼这个方法。也许你可以为该方法创建一个单独的页面并通过ajax进行调用

答案 3 :(得分:0)

简单回答:你不能(至少是page_load)!清楚地了解什么是服务器端以及什么是客户端代码。

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

方法表示您要调用的函数名称,
params 表示指定函数应该采用的参数a id 是请求对象的唯一标识符。

然后您要将此请求发送到服务器。这应该用ajax完成。假设您有一个函数来处理名为sendAjaxRequest的带有3个参数的ajax请求:

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

    sendAjaxRequest(scriptUrl,request,function(response){
        alert("the server responded with : "+response.result);
    });
    
  4. 服务器接收请求,解释它并使用所需的参数执行方法并构造响应json对象:

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

    并将其发回给客户。

    无论情况如何,这都是非常好的做法。

答案 6 :(得分:0)

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

ASP.NET - 以下HTML标记由ASP.Net TextBox和HTML Button组成。

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

JavaScript代码: - 单击Button时,将执行ShowCurrentTime JavaScript函数,该函数对GetCurrentTime WebMethod进行AJAX调用。 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();
}