2014-01-24 2 views
0

У меня есть этот кодКак установить условия на основе значения Eval()?

<div class="result correct"><%# Eval("QandAID") %></div> 

и мне интересно, как я могу установить условия на значение, то есть, если значение Eval является 2 класс изменение дел до результата «неправильно» еще оставить как «результат правильного». Это также является частью вопроса, если кто-нибудь знает, как это сделать (измените класс div на основе условия), то это будет бонус.

О, и у меня есть этот код внутри ретранслятора, привязанного к набору данных.

ответ

2

Определить свойство в классе Page:

public int MyValue { get; set; } 

Тогда доступ к нему на странице так:

<div style='width: <%=MyValue %>px'></div> 

Этот пример должен ответить косвенно на ваш вопрос и открыть еще несколько возможностей о том, как поместить значения в HTML, которые могут или не могут быть привязаны к DataRow.

Другой пример:

<%# Eval("QandAid") == 2 ? "result incorrect" : "result correct" %> 

Или:

<div class='<%# Eval("QandAid") == 2 ? "class1" : "class2" %>'> 
+0

Оба ответа работает, ваш поднимает другой вопрос, хотя, какой есть разница между <% = и <% #? – Chris

+1

<% = встроенный скрипт C# с доступом к коду позади, тогда как <% # привязан к DataRow, проходящему рендеринг, вместо страницы. – pid

+0

Gotcha, спасибо за объяснение разницы. – Chris

1

Это должно происходить за пределами разметки. Сделать класс это свойство модели и установить его на основе вашего состояния:

class YourModel { 
    public int QandAID { get; set; } 
    public string ValidityClass { 
     get { 
      return QandAID == 1 ? "correct" : "incorrect"; 
     } 
    } 
} 

Тогда ваш шаблон повторителя становится чем-то вроде этого:

<div class='result <%# Eval("ValidityClass") %>'><%# Eval("QandAID") %></div> 
+0

Как и выше, с другим ответом, он работает. У вас тоже возникает вопрос. Почему мы можем получить доступ к публичным строкам, но не к методу в коде? – Chris

+1

Поскольку 'Eval' использует отражение для поиска полей или свойств объекта, привязанного к данным. Он не ищет методов. –

+0

ОК, это объясняет, почему я никогда не мог вызвать метод таким образом. Спасибо – Chris

Смежные вопросы