CS0103:当前上下文中不存在名称“rand”

时间:2013-02-22 23:05:31

标签: asp.net

我知道这个错误一直是十几个问题的中心,但我没有看到任何其他问题的情况。

我在aspx页面的顶部有以下内容:

<% String rand = new Random().Next().ToString(); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <script type="text/javascript" src="../js/script.js?v=<%=rand%>"></script> 

它构建得很好,但是当访问页面时,我收到错误抱怨该行的<%=rand%>部分说它不知道rand是什么。作为一个大型Web应用程序,我们不想缓存经常更改的代码,这是我们正在采取的方法。事实上,这种确切的方法适用于我们的另一页,但出于某种原因不在此页面上工作。我们只想生成一个随机数,因为它用于我们不希望缓存的多个js文件。

我已经查看了许多其他CS0103问题,但我没有读过关于在aspx页面标记中创建的变量的讨论。

1 个答案:

答案 0 :(得分:1)

作为替代解决方案......

<script type="text/javascript" src="../js/script.js?v=<asp:Literal id="randNum" runat="server" />"></script>

然后在你的代码中。

randNum.Text = new Random().Next().ToString();

但是,作为旁注,使用此方法来防止缓存是一种黑客攻击。如果您使用的是.NET 4.5,我建议您查看scriptBundle和styleBundle类,它们基本上实现了这种方法,并缩小了您的脚本/ CSS。