将javascript变量分配给C#变量(ASP.net)

时间:2014-03-17 17:34:52

标签: c# javascript html asp.net

我知道我可以将C#变量分配给js:

<script >
var x = <%=CsharpVar%> ;
</script>

该工作。

但是可以选择相反吗?我的意思是这样的(它不适合我):

<script >
var x= "Exmp";
<%CsharpVar=%>=x ;
</script>

谢谢!

2 个答案:

答案 0 :(得分:3)

这是不可能的,因为您必须考虑如何在asp.net中生成页面

服务器生成页面,然后将其推送到客户端。因此,它可以将c#变量添加到页面中并执行其他操作,但一旦推送,它就无法再进行交互。

将数据从javascript代码恢复到C#的唯一方法是将其发送到服务器。

因此,例如,如果用户填写表单上的文本框,他们必须按提交,以便在服务器知道任何内容之前将其推送到服务器。它们完全断开连接,页面和服务器之间可能发生的唯一通信是它专门发送请求(例如提交表单)。

当提交表单或类似内容时,该页面将向服务器发送类似于“加载更新配置文件页面”的内容,并且我在文本框中输入的名称是dave&#39;然后服务器可以弄清楚如何处理它收到的数据,例如。将此人的姓名更新为“dave&#39;。

如果您想要更加动态,可以使用ajax更新某些内容而无需刷新整个页面。许多网站会在您更新设置时执行此操作,例如。你单击一个复选框来执行某些操作,它将执行ajax请求(基本上与上面的示例相同,但它在后台安静地发生)。

无论哪种方式,你都需要花一些时间来了解asp.net的工作原理我认为要正确理解发生了什么以及为什么你不能做你正在尝试的事情去做。最简单的方法是,当服务器显示您的页面并将其发送给您时,它会将其放入一个框中,并将联邦快捷方式发送到您的家中。如果你对它做任何事情,那么服务器就没有线索,或者能够将任何东西放到C#变量等中,除非你做了所有的改变,并且联邦政府将它发回去。

答案 1 :(得分:0)

要将javascript值分配给C#变量,可以使用属性为runat = server的隐藏字段,并获取此值服务器端。

像SLC写的另一个解决方案是将值发送到服务器。我已经使用httphandler + ajax调用将输入的值存储在服务器会话状态并重用服务器端。