2012-06-26 5 views
1

À mon avis, j'utiliser une vue partielle avec une liste d'objets à partir de mon modèle comme suit:Coloration une vue partielle en MVC 3

@foreach (var item in Model.MyObjectList) 
{ 
    @Html.Partial("DisplayObject", item) 
} 

Ceci forme un motif de grille le long de mon écran principal, une rangée de chaque objet.

Je voudrais les rayer en utilisant la méthode normale des lignes impaires d'une couleur, même des lignes une autre. (Comme par exemple this.

Habituellement, vous feriez cela en faisant une sorte de calcul mod.

La question est que je ne peux pas comprendre comment faire cela sans passer dans un numéro de ligne dans l'élément dans la vue partielle.

est-il un moyen plus simple? Html.Partial ne possède pas les attributs HTML je peux brancher sur.

Je pourrais bien sûr mettre une table autour de la partie et une bande de cette façon, mais préférerait ne pas le faire

+0

pouvez-vous poster le code de vue partielle? –

+0

pouvez-vous publier le code html rendu. –

+0

largement hors de propos maintenant que nous avons un certain nombre de réponses, mais merci! – ozz

Répondre

1

Si vous pouvez limiter le soutien à CSS3, vous pouvez utiliser les :nth-child(odd) et :nth-child(even) règles - comme indiqué sur cette page du W3C - http://www.w3.org/Style/Examples/007/evenodd.en.html

Ces exemples montrent comment l'utiliser sur tr balises - mais il applique à tout ce que vous pouvez appliquer un sélecteur à:

<style type="text/css"> 
    div p:nth-child(odd) { color:red; } 
    div p:nth-child(even) { color:green; } 
</style> 
<div> 
    <p>first</p> 
    <p>second</p> 
    <p>third</p> 
</div> 
+0

Est-ce que cela fonctionne dans tous les navigateurs? – VJAI

+0

définir 'tous les navigateurs'. Envisagez-vous d'avoir une [IE7 taxe] (http://www.bbc.co.uk/news/technology-18440979)? Ou en effet une taxe IE8? Sinon, vous avez IE9 + et les autres. [Cochez-le sur Quirksmode] (http://www.quirksmode.org/css/contents.html) –

+0

Je veux dire la majorité des navigateurs pas * tous * – VJAI

1

Je pense que vous devriez transmettre l'information dans le modèle qui est passé à la vue partielle ou envelopper la vue partielle dans un élément et appliquer le correct css ... Comme:

@foreach (var item in Model.MyObjectList) { 
    <li class="odd|even"> 
    @Html.Partial("DisplayObject", item) 
    </li> 
} 
0

Ajoutez le numéro de ligne en tant que propriété à la définition de votre classe qui définit chaque 'élément'.

Utilisez cette propriété dans la vue partielle pour déterminer s'il s'agit d'une ligne impaire ou paire.

0

Transmettez la valeur Mode par ViewBag de la vue principale à partielle.

@foreach (var item in Model.MyObjectList) 
{ 
    if(ViewBag.Mode == "odd") 
    { 
     ViewBag.Mode = "even"; 
    } 
    else 
    { 
     ViewBag.Mode = "odd"; 
    } 

    @Html.Partial("DisplayObject", item) 
} 
Questions connexes