2010-10-26 65 views
2

有没有一种方法来分配/传递/复制一个JavaScript变量到C#中的服务器端变量?为了争论,我们假设我能够解析一些JSON以获得我想要存储的变量,并将它们分配给客户端(即var = FirstName和var = 25和var = someDateTime等)。传递JavaScript变量到服务器端的C#逻辑

+0

我认为你需要成为一个“小”更具体的,我会假设你的意思是阿贾克斯,还是你的意思是json,还是什么... – dstarh 2010-10-26 14:27:12

+0

@dstarh见上面,做了几个编辑。这有帮助吗? – locoboy 2010-10-26 15:07:39

回答

5

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

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

+0

你会如何实现这一点? – locoboy 2010-10-26 19:56:05

+1

@ cfarm54,好吧,作为一名软件开发人员,您想要建立起来的伟大技能之一就是能够为您自己弄清细节。我会从谷歌搜索AJAX和jQuery等东西开始,以便从根本上理解它们。然后当你遇到特定的死角时,回来问问我们。就目前而言,对于特别具体的答案,恕我直言,这个问题太模糊了。 – 2010-10-27 14:37:54

+0

好的,谢谢戴夫。 – locoboy 2010-10-28 04:48:06

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; 
} 
+0

'JavascriptValue'控件的ID很少*为“JavascriptValue”:使用'$ get(<%= JavascriptValue.ClientID%>)。Value;' – Brad 2010-10-26 14:36:55

+0

这似乎是最简单的,我会试试这个,让你懂。 – locoboy 2010-10-26 15:09:52

0

写值到控制(E。 G。 HiddenField)通过JS并阅读回发。

您可以在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"]; 
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; 
相关问题