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

有没有办法将一个javascript变量分配/传递/复制到C#中的服务器端变量? 为了论证,让我们说我能够为我想要存储的变量解析一些JSON并在客户端上分配它们(即var = FirstName和var = 25以及var = someDateTime等)。

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

像jQuery这样的库让这种事情变得非常简单。

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

一个简单的方法,无需编写处理程序,ajaxpost等来实现这一点,只需将java脚本变量存储在隐藏文本框中并在post上检索它。 您还可以回写隐藏字段并使用值提供脚本,例如

标记

 

脚本

  

服务器端

 protected void Page_Load(object sender, EventArgs e) { string val = JavascriptValue.Value; } 

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

您可以在Page_Load上注册代码隐藏的隐藏字段

 if (this.Request.Form["myHiddenField"] == null) { ClientScript.RegisterHiddenField("myHiddenField", ""); } 

用脚本填充它

 ClientScript.RegisterOnSubmitStatement(this.GetType(), MethodBase.GetCurrentMethod().DeclaringType.Name + "_myHiddenField", "var res=document.getElementById('myHiddenField');if(res!=null){res.value='some value';}"); 

并在回发上阅读(也是Page_Load

 var myValue = (!IsPostBack) ? null : this.Request.Form["myHiddenField"]; 

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

JavaScript代码:

  

C#代码:

 height of browser:@Request.Cookies["height"].Value;