【发布时间】:2014-04-23 01:38:24
【问题描述】:
我知道我可以像这样将 C# 变量分配给 js:
<script >
var x = <%=CsharpVar%> ;
</script>
这是工作。
但是有相反的选择吗?我的意思是这样的(它对我不起作用):
<script >
var x= "Exmp";
<%CsharpVar=%>=x ;
</script>
谢谢!
【问题讨论】:
标签: c# javascript html asp.net
我知道我可以像这样将 C# 变量分配给 js:
<script >
var x = <%=CsharpVar%> ;
</script>
这是工作。
但是有相反的选择吗?我的意思是这样的(它对我不起作用):
<script >
var x= "Exmp";
<%CsharpVar=%>=x ;
</script>
谢谢!
【问题讨论】:
标签: c# javascript html asp.net
这是不可能的,因为你必须考虑在asp.net中页面是如何生成的
服务器生成页面,然后将其推送到客户端。因此它可以将c#变量添加到页面中并做其他事情,但是一旦它被推送,它就不能再交互了。
将数据从 javascript 代码返回到 C# 的唯一方法是将其发送到服务器。
因此,例如,如果用户在表单上填写文本框,他们必须按下提交,以便在服务器知道任何信息之前将其推送到服务器。它们完全断开连接,页面和服务器之间唯一可以发生的通信是在它专门发送请求时(例如提交表单)。
提交表单或类似内容时,该页面将向服务器发送类似“加载更新配置文件页面,我在文本框中输入的名称是 dave”之类的信息,然后服务器可以弄清楚如何处理它的数据收到,例如。将人名更新为“dave”。
如果你想更有活力,你可以使用 ajax 来更新一些东西,而不用刷新整个页面。当您更新设置时,许多网站都会这样做,例如。你点击一个复选框来做某事,它会执行一个ajax请求(基本上和上面的例子一样,但是它在后台安静地发生)。
无论哪种方式,您都需要花一点时间了解 asp.net 在后台是如何工作的,我认为才能正确理解正在发生的事情以及为什么您不能做您想做的事情。最简单的想法是,当服务器显示您的页面并将其发送给您时,它会将其放入一个盒子中,然后由联邦快递寄到您家。如果您对它进行任何操作,那么服务器将不会有任何线索,或者无法将任何内容放入 C# 变量等中,除非您进行所有更改,然后再将其返回。
【讨论】:
要将 javascript 值分配给 C# 变量,您可以使用具有属性 runat=server 的隐藏字段并在服务器端获取此值。
SLC 写的另一个解决方案是将值发送到服务器。我已经使用 httphandler + ajax 调用将输入的值存储在服务器会话状态中并重用服务器端。
【讨论】: