2010-04-29 9 views
3

J'ai le code suivant dans une c Page # ASPX:Utilisation de Container.DataItem avec une déclaration Si, dans <% %>

<ItemTemplate> 
    <a <% if(((Dictionary<string, string>)Container.DataItem)["type"]==Session["type"]){%> class="active"<%}%> 

Ce code provoque l'erreur suivante.

Compiler Error Message: CS0117: 'System.ComponentModel.Container' does not contain a definition for 'DataItem' 

Pourquoi est-ce et comment puis-je faire une déclaration conditionnelle qui utilise le Container.DataItem? Container.DataItem fonctionne parfaitement lorsqu'il est utilisé dans un <%# %> toutefois mettre la déclaration if dans le <%# %> provoque l'erreur suivante:

Compiler Error Message: CS1518: Expected class, delegate, enum, interface, or struct 

Répondre

3

Vous pourriez avoir quelque chose comme ça


<ItemTemplate> 
<%# ((Dictionary<string, string>)Container.DataItem)["type"].Equals(Session["type"]) ? 
"<a class='active'>mylink</a>" : 
"<a>mylink</a>" %>

ou


<ItemTemplate> 
<a class='<%# ((Dictionary<string, string>)Container.DataItem)["type"].Equals(Session["type"]) ? 
"active" : string.Empty" %>'>my link </a>

EDIT Annonce déduit les égal à la solution

+0

Pour une raison quelconque, l'instruction conditionnelle est toujours résolue en 'faux' et donne toujours le résultat 'faux'. –

+0

Ok l'a résolu! au lieu de '==' je devais utiliser '.Equals()'. Une solution géniale merci beaucoup mate! –

+0

C'est une chaîne dérivée d'un 'KeyValuePair' dans un' Dictionary Generic' –