如何在c#中获取代码背后的javascript值

我需要在c#中获取代码背后的javascript值。我知道我可以使用隐藏字段,但页面上没有用于回发的服务器控件。请告诉我如何在代码中获取vales。

这是我的代码:

  Facebook Get Logged in User Details UserName,Email,Profile Image      // Load the SDK Asynchronously (function (d) { var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; if (d.getElementById(id)) { return; } js = d.createElement('script'); js.id = id; js.async = true; js.src = "//connect.facebook.net/en_US/all.js"; ref.parentNode.insertBefore(js, ref); } (document)); // Init the SDK upon load window.fbAsyncInit = function () { FB.init({ appId: 'APPID', // App ID channelUrl: '//' + window.location.hostname + '/channel', // Path to your Channel File status: true, // check login status cookie: true, // enable cookies to allow the server to access the session xfbml: true // parse XFBML }); // listen for and handle auth.statusChange events FB.Event.subscribe('auth.statusChange', function (response) { if (response.authResponse) { // user has auth'd your app and is logged into Facebook var uid = "http://graph.facebook.com/" + response.authResponse.userID + "/picture"; FB.api('/me', function (me) { document.getElementById('auth-displayname').innerHTML = me.name; document.getElementById('myJSString').value = me.name; alert(document.getElementById('myJSString').value); document.getElementById('Email').innerHTML = me.email; document.getElementById('profileImg').src = uid; // document.getElementById('ctl00_CPHDefault_tcTPS_TPProd_ctl01_tcProduction_TPNewT‌​itlesStatus_ChangedRowsIndicesHiddenField').value = uid; // alert('yyy'); }) document.getElementById('auth-loggedout').style.display = 'none'; document.getElementById('auth-loggedin').style.display = 'block'; } else { // user has not auth'd your app, or is not logged into Facebook document.getElementById('auth-loggedout').style.display = 'block'; document.getElementById('auth-loggedin').style.display = 'none'; } }); $("#auth-logoutlink").click(function () { FB.logout(function () { window.location.reload(); }); }); }  

Facebook Login Authentication Example

Name: (logout)
Email:
Profile Image:

你可以看到没有服务器控件,所以我如何在代码后面获取NAME,UID变量。

谢谢

我将调查ASP.NET AJAX页面方法的使用,因为它们允许生活在.aspx页面中的脚本可调用独立Web服务,如下所示:

代码隐藏文件中的页面方法(为讨论起见,将其命名为default.aspx):

 [WebMethod] public static string SaveData(string name, string uid) { // Logic here to do what you want with name and uid values (ie save to database, call another service, etc.) } 

jQuery调用default.aspx的SaveData方法:

 $.ajax({ type: "POST", url: "default.aspx/SaveData", data: "{'name':'John', 'uid':'ABC123'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { // Do something interesting here. } }); 

注意:ASP.NET AJAX页面方法自动将其响应编码为JSON因此您不会在代码隐藏或任何序列化逻辑中看到任何JSON序列化。

有关ASP.NET AJAX页面方法的更多信息,请查看使用jQuery直接调用ASP.NET AJAX页面方法

您可以使用hiddenfield服务器控件在javascript中为其分配所需的值,并在服务器端对其进行评估。 如果您不想回发,那么您可以使用jQuery ajax发送值。

HTML

  

使用Javascript

 document.getElementById('ValueHiddenField').value = "yourValue"; 

代码背后

 string yourValue = ValueHiddenField.Value; 

使用jQuery ajax和web方法向后面的代码发送值,你可以在这里找到很好的教程。

 $.ajax({ type: "POST", url: "PageName.aspx/MethodName", data: {'yourParam': '123'}, contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { // Do something interesting here. } }); 

代码背后

 [WebMethod] public static void YourMethod(string yourParam) { //your code goes here } 

您可以使用以下方法:

  

C#代码获取上述函数的返回值:

 ClientScript.RegisterClientScriptBlock(this.GetType(), "alertScript", ""); 

或者像Adil所说,可以使用隐藏字段并赋值:

   

分配值的脚本: