将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;