2009-12-16 6 views
0

Je suis nouveau à mvc et jquery Dans mon contrôleur j'ai ViewData ["a"] = "true"; Je souhaite accéder à l'objet viewdata dans jquery <% if (ViewData ["a"] == "true")%> { $ ('# div1'). Show(); } La jquery ci-dessus ne fonctionne pas pour moi Quelqu'un peut-il faire la lumière sur ce point. Merci d'avancecontroller viewdata objet dans jquery

Répondre

3
<script type="text/javascript"> 
    var ViewData_a = "<%= ViewData["a"] %>"; 
</script> 

... 

<script type="text/javascript"> 
    $(document).ready(function() { 
     if(ViewData_a) { 
      $('#div1').show(); 
     } 
</script> 
0

Vous ne pouvez pas accéder à votre ViewData de cette manière. Vous devrez faire quelque chose comme mettre la valeur dans un champ caché, puis vérifier cela.

if ($('.HdnFieldClassName').val() == "true") 
{ 
    $('#div1').show(); 
} 

Ou quelque chose comme ça.

Pas sûr que vous pouvez faire quelque chose comme

if ('<%= ViewData["a"] %>' == "true" 

Je ne sais pas d'autres personnes, mais je ne suis pas un grand fan de l'utilisation des noms de contrôle dans jQuery. Je préfère de beaucoup utiliser le nom de classe pour attraper un contrôle.

<input type='text' class="jQueryMyTextBox" id='MyTextBox'> 

$('.jQueryMyTextBox').val() 

Cela signifie simplement que si le nom de contrôle change que votre code fonctionne toujours et vous pouvez maintenant partager le code entre les formes etc.

0

Pendant que vous y êtes, pensez à utiliser JSTL/EL au lieu de scriptlets.

Alors ...

<%= ViewData["a"] %> 

devient ...

<c:out value="${ViewData.a}"/> 

JSTL/EL vous donne souvent des choses gratuitement. Comme dans cet exemple, la valeur de ViewData ["a"] sera automatiquement codée en entité.