2014-10-10 67 views
0

我努力做到以下几点:从JavaScript调用服务器端功能,而无需使用AJAX

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

+0

请发布您的课程。 contactId是私人的? – Fabio 2014-10-10 11:45:45

+0

我更新了我的问题,我不认为该课程导致问题:/ – Sora 2014-10-10 11:46:38

+4

您是否知道JS在客户端(浏览器)和服务器上的C#上执行?你的C#代码(编译器,实际上)不知道contactId是什么。 – laruiss 2014-10-10 11:46:53

回答

1

你赢了无法将您的javascript变量(contactId)传递给C#方法。建议为此寻找不同的解决方案,例如,制作通用Web处理程序(.ashx),并通过ajax将您的contactId传递给您,并从您的Encrypt调用中取回您期望的任何内容。

+0

我不想使用ajax – Sora 2014-10-10 11:53:10

+1

你看过我的问题吗? – Sora 2014-10-10 11:54:48

+0

作为替代方案,您可以构建另一个接受** contactId **的页面,并将您重定向到不同的页面,该页面将加密您的contractid并重定向到Contacts/AddEditContact.aspx或任何您想要的位置。 – Vladimirs 2014-10-10 11:54:54

0

对于调用服务器端构件中的唯一方式是一个请求HTTP或同步(POST页)O异步(AJAX)

你不要在你直接调用服务器功能

情况

收到一个错误,因为的ContactID不会是一个网页的会员,您可以用这些方式

ASP.NET Client to Server communication

comunicate
1

您可以从javascript调用Server端(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

+0

来源:http://www.codeproject.com/Questions/727256/how-to-call-server-side-function-from-javascript – 2014-10-10 12:09:24

+0

欢迎来到StackOverflow。你可以点击[编辑](https://stackoverflow.com/posts/26299112/edit),如果你想改变你的文章中的内容,所以没有必要使用评论。 – Adaephon 2014-10-10 12:17:06