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

时间:2010-10-26 14:23:18

标签: c# javascript asp.net

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

4 个答案:

答案 0 :(得分:5)

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

jQuery这样的图书馆使这种事情变得非常简单。

答案 1 :(得分:1)

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

一个简单的方法,无需编写处理程序,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;
}

答案 2 :(得分:0)

通过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"];

答案 3 :(得分:0)

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