在C#中,有没有办法将javascript变量赋值/传递/复制到服务器端变量?为了便于讨论,假设我能够解析一些JSON来获取我想要存储的变量,并将它们分配到客户端(即,.var = FirstName,var = 25,var = someDateTime,依此类推)。
发布于 2010-10-26 22:28:10
Javascript变量存在于客户机上,因此为了将这些值放入服务器,您需要执行来自客户机的请求。您可能需要一种称为AJAX的方法。AJAX涉及到Javascript在页面后台向服务器发出请求。您将设置一个等待这些后台请求的C#网页。如果使用GET请求,那么将变量放在对新C#页面的AJAX请求的查询字符串中。如果要使用POST请求,则需要在post到页面的数据中设置参数。
像jQuery这样的库使得这类事情变得非常简单。
发布于 2010-10-26 22:29:13
没有直接的方法可以从服务器端代码访问客户端代码中的变量。
一种无需编写处理程序、ajax帖子等的简单方法就是简单地将java脚本变量存储在一个隐藏的文本框中,并在帖子中检索它。您也可以写回隐藏字段并将值提供给您的脚本,例如
标记
<asp:HiddenField runat="server" Id="JavascriptValue" value="0">脚本
<script>
var myValue = <%=JavascriptValue.Value%>
</script>服务器端
protected void Page_Load(object sender, EventArgs e)
{
string val = JavascriptValue.Value;
}发布于 2010-10-26 22:29:25
通过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"];https://stackoverflow.com/questions/4024651
复制相似问题