2009-10-01 5 views
1

J'ai une vue qui contient une fonction javascript que je dois init/call lorsque la page est chargée. La méthode est statique mais elle doit être appelée avec certains paramètres (une liste d'IDs) - cette liste est dynamique et varie selon certains paramètres de la chaîne de requête (je ne peux pas générer la liste clientide à partir de la chaîne de requête).Injecter une chaîne dans un javascript sur une vue mvc asp.net

J'ai donc besoin de générer cette liste côté serveur.

Mes options sont, autant que je le vois:

1) Faire un appel ajax sur le client, demandant les ids du serveur.

2) Injecter/insérer les identifiants directement sur la vue (c'est une propriété sur le viewmodel).

Peu importe comment je le tourne, l'option 2 semble la plus saine. J'ai déjà préparé les données sur le viewmodel et donc il est prêt quand la vue est remplie - je ne vois aucune raison de faire une demande supplémentaire au serveur, juste pour obtenir les données.

Je sais que beaucoup de gens pensent que c'est une mauvaise idée d'injecter quelque chose de dynamique dans un javascript autrement statique. Pour cela, je pourrais simplement injecter un nouveau javascript, en ne tenant que les identifiants et un appel à la méthode javascript statique, ce qui est ce que je veux vraiment faire.

Mon problème est le suivant: Quand j'écris mon asp.net <% =%> inclut, VS IDE arrête le highligting, me faisant croire que je suis peut-être sur la mauvaise piste? Sûrement je ne suis pas le seul à devoir sortir quelque chose dans un bloc javascript dans asp.net mvc?

+0

En cas d'arrêt VS surlignant ne signifie pas que l'analyseur de vue ne sera pas prise en charge des phrases de script côté serveur. –

Répondre

1

Route 2 (Le ViewModel) est certainement le chemin à parcourir et

<script type="text/javascript> 
<%= Model.JavascriptToInsert %> 
</script> 

devrait fonctionner (malgré l'absence de VS mettant en évidence)

Il ne fonctionnera pas dans un fichier séparé JS bien. Cela doit être à votre avis même.

Bonté,

Dan

+0

Je pensais seulement à mettre le javascript statique dans un fichier js séparé - pour séparer le javascript statique de la dynamique. Mais merci, c'est ce que je suis en train de faire, je me demandais juste s'il me manquait quelque chose - je déteste que l'illumination n'apparaisse pas ... –

Questions connexes