我可以将C#变量管理成.js吗?

时间:2012-06-12 09:26:58

标签: c# javascript .net

我将script.js放入文件夹脚本中。 我想从Web表单(例如<%= myString = 3 %>)管理该脚本中的一些C#变量。

我认为这是不可能的,但也许我可以用某种方式做到这一点?谢谢

2 个答案:

答案 0 :(得分:2)

Javascript是客户端执行的代码,C#是服务器端执行的代码。所以你不能严格地使“变量”可见,因为它们是两个完全不同的代码平台/运行时,在两台不同的计算机上运行。但是,您仍然可以通过几种不同的方式封送它们之间的数据。

  • 编写Web服务并通过AJAX
  • 调用它
  • 使用您的数据填充页面的控件或URL,并通过Javascript DOM API(或通过jQuery等一些包装器库)进行查询。

第二个例子(因为你问过):

<!-- Somewhere in your page -->
<span style="visibility:hidden" id="myData"><%= myString %></span>

// In Javascript, using jQuery:
var myData = $('#myData').text();

答案 1 :(得分:2)

如果变量与页面上的特定元素直接相关,那么您一定要考虑使用HTML5 data-*属性来存储值。想象一下变量属于一个锚元素,你可以这样输出:

<a href="something" id="myLink" data-my-var="5">Blah</a>

然后您可以使用jQuery访问变量,如$("#myLink").data("myVar")(请注意驼峰情况)。 jQuery将尝试将值转换为正确的类型。如果你想要原始值,那么只需使用像attr这样的$("#myLink").attr("data-my-var") jQuery方法(注意属性名称没有改变)。

或者,您可以在服务器端代码中执行以下操作以输出到您的页面:

<script type="text/javascript">
   var myVar = <%= someVariableToOutput %>;
</script>

只要在您的依赖脚本上方输出此代码,就可以像使用任何其他JS变量一样访问它。

最后,您可以在加载页面时执行AJAX请求并以此方式获取变量(尽管如果数据仅在主请求期间可用,则可能不适用)

希望有所帮助