混合使用javascript和内联服务器代码

时间:2011-01-31 16:00:56

标签: c# javascript client-side server-side inline-code

我正在尝试执行以下操作:

   <script>
      var documentId = %(this).attr('id');

      <% int docId = %>documentId<%;%>

   </script>

正如您所看到的,我正在尝试创建一个新的服务器变量,但是要分配javascript变量的值。或至少评估javascript变量。 (这是我试图解决的现实世界问题的一个简单例子)我有什么办法可以做到这一点吗?

5 个答案:

答案 0 :(得分:4)

问题:

  1. 在将任何内容传输到客户端之前,在服务器上评估服务器端代码
  2. 客户端代码(JavaScript)在浏览器中评估,在服务器完成文档传输后
  3. 在理解了上述陈述后,您会发现您当前的例子在技术上是不可能的。

    您需要做的事情(如果您的目标是阻止页面刷新)是使用AJAX将新数据发送到服务器上的脚本。该脚本将处理数据并响应浏览器。

答案 1 :(得分:0)

在呈现页面之前,将首先处理服务器代码。因此,您必须使用类似AJAX的东西将JavaScript值传递回服务器。

答案 2 :(得分:0)

由于您的服务器代码为对象提供了@id,因此服务器应该在创建时就知道它。但不,你不能像这样交错客户端和服务器 - 它们在时间和地理上不相交

答案 3 :(得分:0)

您无法执行此操作,因为已经计算了服务器变量,并且在客户端脚本运行时已生成HTML。

服务器端代码运行=&gt;生成的HTML文件服务于浏览器=&gt; Javascript代码运行

此过程是单向的,因此如果不使用Ajax请求,就无法返回该变量。

但是,如果您只需要id,并且控件是.NET控件,则只需使用myControl.ClientID值即可。

答案 4 :(得分:0)

要将数据从浏览器发送到服务器,您应该使用表单控件(文本字段,隐藏字段,文本区域,复选框等)或ajax。在您的情况下,您可以将javascript对象序列化为字符串,并通过隐藏字段或XmlHttpRequest将其传递给服务器。