将javascript变量传递给服务器端C#逻辑

将javascript变量传递给服务器端C#逻辑,c#,javascript,asp.net,C#,Javascript,Asp.net,有没有一种方法可以将javascript变量分配/传递/复制到C#中的服务器端变量?为了便于讨论,假设我能够解析一些JSON变量,以便在客户端上存储和分配这些变量(即var=FirstName、var=25和var=someDateTime等) 客户端上存在Javascript变量,因此为了将这些值输入服务器,您需要执行来自客户端的请求。您可能需要一种称为AJAX的方法。AJAX涉及Javascript在页面后台向服务器发出请求。您将设置一个C#web页面,该页面需要这些后台请求。如果使用GET

有没有一种方法可以将javascript变量分配/传递/复制到C#中的服务器端变量?为了便于讨论,假设我能够解析一些JSON变量,以便在客户端上存储和分配这些变量(即var=FirstName、var=25和var=someDateTime等)

客户端上存在Javascript变量,因此为了将这些值输入服务器,您需要执行来自客户端的请求。您可能需要一种称为AJAX的方法。AJAX涉及Javascript在页面后台向服务器发出请求。您将设置一个C#web页面,该页面需要这些后台请求。如果使用GET请求,则将AJAX请求的查询字符串中的变量放入新的C#页面。如果要使用POST请求,则需要在发布到页面的数据中设置参数

像这样的库使这类事情变得非常简单。

没有直接的方法从服务器端代码访问客户端代码中的变量

不需要编写处理程序、ajax帖子等,实现这一点的一种简单方法是将java脚本变量存储在一个隐藏的文本框中,然后在帖子中检索它。您还可以写回隐藏字段并向脚本提供值,例如

标记

<asp:HiddenField runat="server" Id="JavascriptValue" value="0">

通过JS将值写入控件(例如,
HiddenField
),并在回发时读取该值

您可以在
页面\u Load

if (this.Request.Form["myHiddenField"] == null) { 
    ClientScript.RegisterHiddenField("myHiddenField", ""); }
var myValue = (!IsPostBack)
    ? null
    : this.Request.Form["myHiddenField"];
用脚本填充它

ClientScript.RegisterOnSubmitStatement(this.GetType(),
     MethodBase.GetCurrentMethod().DeclaringType.Name + "_myHiddenField",
     "var res=document.getElementById('myHiddenField');if(res!=null){res.value='some value';}");
并在回发中阅读(也可在加载页面上阅读)


我所做的是将javaScript变量保存在cookie中,然后从C#读取它

JavaScript代码:

<script>
$(document).ready(function () {
   createCookie("height", $(window).height(), "10");
 });

 function createCookie(name, value, days) {
   var expires;
   if (days) {
     var date = new Date();
     date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
     expires = "; expires=" + date.toGMTString();
   } else {
     expires = "";
   }
   document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
  }
</script>  

我想你需要更具体一点,我假设你指的是ajax,还是json,或者什么…@dstarh,见上文,做了一些编辑。这有帮助吗?
JavascriptValue
控件的ID很少是“JavascriptValue”:使用
$get().Value这似乎是最简单的,我会尝试一下并让你知道。你将如何实现这一点?@cfarm54,作为一名软件开发人员,你想要培养的一项伟大技能是能够自己解决细节问题。我会先在谷歌上搜索AJAX和jQuery之类的东西,以便您能够从根本上理解它们。然后,当你遇到特定的死胡同时,回来问我们。目前,这个问题有点太模糊,无法给出具体的答案。
var myValue = (!IsPostBack)
    ? null
    : this.Request.Form["myHiddenField"];
<script>
$(document).ready(function () {
   createCookie("height", $(window).height(), "10");
 });

 function createCookie(name, value, days) {
   var expires;
   if (days) {
     var date = new Date();
     date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
     expires = "; expires=" + date.toGMTString();
   } else {
     expires = "";
   }
   document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
  }
</script>  
height of browser:@Request.Cookies["height"].Value;