views:

195

answers:

1

I have the following code in a c# aspx page:

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

This code is causing the following error.

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

Why is that and how can I make a conditional statement that uses the Container.DataItem? Container.DataItem works perfectly when used within a <%# %> however putting the if statement within the <%# %> causes the following error:

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

You could have something like this


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

or


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

EDIT Added the Equals to the solution

Claudio Redi
For some reason the conditional statement is always resolving in 'false' and always giving the 'false' result.
William Calleja
Ok solved it! instead of `==` I needed to use `.Equals()`. Awesome solution thanks a lot mate!
William Calleja
It's a string derived from a `KeyValuePair` within a `Dictionary Generic`
William Calleja