在不使用ajax的情况下从javascript调用服务器端函数

时间:2014-10-10 11:44:10

标签: javascript c#

我正在尝试执行以下操作:

function redirectContactOnClick(contactId) {
            var enc=<%= QueryStringModule.Encrypt("cont="+ contactId)%>;
            alert(enc);
            //window.location = "Contacts/AddEditContact.aspx";
        }

QueryStringModule.Encryptc# class内的一个函数,该页面引发错误说:The name 'contactId' does not exist in the current context

3 个答案:

答案 0 :(得分:1)

您将无法将javascript变量(contactId)传递给C#方法。建议为此寻找一个不同的解决方案,例如,制作Generic Web Handler(.ashx)并通过ajax传递您的contactId,并从Encrypt调用中获取您所期望的任何内容。

答案 1 :(得分:1)

您可以从javascript调用服务器端(C#)功能。 首先,您将脚本包含在可在服务器上运行的ScriptManager中。 然后javascript函数可以调用c#函数(其属性为([System.Web.Services.WebMethod]且必须是静态的)可以访问。

例如

 PageMethods.QueryStringModule.Encrypt("cont="+ contactId);

在客户端,

  [System.Web.Services.WebMethod]
  public static void Encrypt(string id)
  {
       // Do something
  };

在服务器端

(资料来源:http://www.codeproject.com/Questions/727256/how-to-call-server-side-function-from-javascript

答案 2 :(得分:0)

要调用服务器端成员,唯一的模式是执行请求HTTP或同步(POST页面)o async(AJAX)

您不能直接调用服务器功能

在你的情况下

收到错误,因为 contactId 不是您可以通过这些方式进行通信的网页会员

ASP.NET Client to Server communication

相关问题