繁体   English   中英

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

[英]Passing javascript variables to server-side C# logic

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

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

jQuery之类的库使这种事情变得非常简单。

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

一种无需编写处理程序,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;
}

我所做的是将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>  

C#代码:

height of browser:@Request.Cookies["height"].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"];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM