#.net #asp.net #if-statement #repeater #eval
#.net #asp.net #if-оператор #повторитель #eval
Вопрос:
Я использую repeater для отображения новостей в разделе новостей. В моем разделе новостей у меня есть 2 метки (заголовок, описание) и одно поле изображения. Ниже приведен код, который я использую для заполнения повторителя:
<asp:Repeater ID="rptNews" runat="server">
<ItemTemplate>
<asp:Image ID="newsImage" runat="server" ImageUrl='<%#String.format("../Images/News/{0}", Eval("newsImage")) %>' />
<asp:Label ID="newsTitle" runat="server" Text='<%#Eval("newsTitle") %>'></asp:Label>
<br />
<asp:Label ID="newsDescription" runat="server" Text='<%#Eval("newsDescription") %>'></asp:Label>
<br />
<div class="clear">amp;nbsp;</div>
</ItemTemplate>
</asp:Repeater>
Я хочу использовать оператор if с , например, если значение Eval («newsImage») равно null, тогда я хочу отключить управление изображениями и просто показывать заголовок и описание новости. Любые предложения о том, как этого достичь.
Ответ №1:
должно быть похоже… Visible='<%# Eval("newsImage").ToString() != "Null" %>'
<asp:Image ID="newsImage" runat="server" Visible='<%# Eval("newsImage").ToString() == "Null" %>' ImageUrl='<%#String.Format("../Images/News/{0}", Eval("newsImage")) %>' />
Комментарии:
1. проблема в том, что я сохраняю Null в базе данных, если изображения нет, поэтому она возвращает строку null, поэтому я хочу проверить, равна ли строка изображения null, тогда visible =fale еще покажет изображение
2. Отредактировал условие. пожалуйста, проверьте сейчас.
3. я попробовал с приведенным выше кодом, теперь он не показывает никаких изображений, даже если есть изображение для этого идентификатора новости
4. Извините, условие такое!= скорее ==, я отредактировал ответ. просто измените условие, и это сработает.
5. Eval(«Изображение новостей»). toString() !=»Null» .. пробовал использовать это, это работает, но по-прежнему показывает пустой блок img для новостей, в которых нет изображения, я этого не хочу
Ответ №2:
Добавьте атрибут Visible в свой тег изображения:
Visible="<%# Eval("newsImage") != null %>"
Хотя в таких случаях, возможно, было бы лучше использовать событие ItemDataBound, оно очень простое в использовании.
Комментарии:
1. проблема в том, что я сохраняю Null в базе данных, если изображения нет, поэтому она возвращает строку null, поэтому я хочу проверить, равна ли строка изображения null, тогда visible =fale еще покажет изображение
2. но это именно то, что вы хотите. Если
Eval("newsImage")
равно нулю, то видимый атрибут станет «false», и вы не увидите изображение. Если значение не равно null, значение Visible станет «true», и вы увидите изображение.3. Eval(«Изображение новостей»). toString() ==»Null», затем visible= ‘false’, иначе visible=»true»
4. Eval(«Изображение новостей»). toString() !=»Null» .. пробовал использовать это, это работает, но по-прежнему показывает пустой блок img для новостей, в которых нет изображения, я этого не хочу
5. Когда
Visible
естьfalse
, элемент управления не попадает к клиенту. Это вообще не должно существовать в ответе. Проверьте, есть ли у вас div вокруг него или что-то в этом роде.