2014-10-10 136 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