2008-11-25 5 views
0

Salut J'ai une vue avec plusieurs contrôles utilisateur et je passe ViewData à chacun d'eux, je voudrais savoir comment vous déterminer le nombre d'éléments en spécifiant la clé de chaîne. Je comprends que vous ne pouvez pas utiliser la comparaison à un entier parce que ViewData est un objet mais je l'ai configuré de cette façon pour expliquer ma question. J'ai également essayé null, mais l'objet ViewData n'est jamais nul, même pour les résultats où aucune donnée n'est remplie dans le ViewData. I.e.Déterminer le nombre de résultats de ViewData

À mon avis

<%if(ViewData["Test"].Values > 0) 
     { 
    %> 
     <%=Html.RenderPartial("~/Views/UC/Test.ascx", ViewData["Test"])%> 
    <% 
     } 
    %> 
+0

Que attribuez-vous à ViewData ["Test"] dans votre contrôleur? –

+0

une requête linq à sql, dynamique dans la plupart des cas. – Ayo

Répondre

4

Si je comprends bien votre question, vous voulez obtenir le nombre à partir d'un élément stocké à l'intérieur du ViewData. La seule façon d'y parvenir est de le convertir en IEnumerable ou IList, puis d'appeler la méthode Count.

0

Pour répondre à ma propre question, voici le chemin que j'ai suivi pour le faire. Dans ma méthode d'action de contrôleur, je détermine le nombre basé sur le nombre d'enregistrements récupérés ici et définit ma ViewData à null si elle ne répond pas à mes exigences.

public ActionResult Test(){ 
    var test = //your query; 
    if(test.Count() > 0) 
    { 
     ViewData["Test"] = test; 
    } 
} 

Maintenant, si rien est récupéré, il règle automatiquement le Viewdata [ « Test »] null et votre point de vue page que vous pourriez faire quelque chose comme ça.

Si vous souhaitez ajouter plusieurs contrôles, vous devez les ajouter dans votre contrôleur et les comparer en utilisant votre page d'affichage. Il y a probablement d'autres façons de le faire mais j'ai trouvé que ça marchait bien.

Questions connexes