2013-02-22 5 views
0

Je sais que cette erreur a été au centre d'une douzaine de questions, mais je ne vois pas ma situation dans aucune de ces autres questions.CS0103: Le nom 'rand' n'existe pas dans le contexte actuel

Je le suivant en haut d'une page 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> 

Il construit très bien, mais lorsque la page est accessible, je reçois l'erreur se plaindre de la partie <%=rand%> de la ligne en disant qu'il doesn Je ne sais pas ce que rand est. En tant qu'application Web de grande taille, nous ne voulons pas mettre en cache du code qui change fréquemment et c'est l'approche que nous adoptons. En fait, cette approche exacte fonctionne sur une autre de nos pages mais ne fonctionne pas sur cette page pour une raison quelconque. Nous voulons seulement générer un nombre aléatoire car il est utilisé sur plusieurs fichiers js que nous ne voulons pas mettre en cache. J'ai examiné plusieurs des autres questions du CS0103 mais aucune de celles que j'ai lues ne parle de variables créées dans le balisage de la page ASPX.

+0

peut-être manquer l'attribut runat = "server" sur l'élément head dans votre code de production? –

Répondre

1

comme solution de rechange ...

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

Et puis dans votre code derrière. En revanche, en utilisant cette méthode pour empêcher la mise en cache est un peu un hack. Si vous utilisez .NET 4.5, je vous suggérerais de regarder dans les classes scriptBundle et styleBundle, qui implémentent essentiellement cette méthodologie et réduisent vos scripts/css.

Questions connexes