Visual Studio: ASPX: поврежденный синтаксис 'IIf': странная ошибка

Следующее объявление в моем ASPX-файле содержит ОШИБКУ в аргументах IIf()...

<br /><asp:Label ID="lblvalLOF_IS_DUE"  runat="server" 
Text='<%# IIf((Eval("aIsLOF_Due") = "True"), "&#9745;", "&#9744;")%>'
style="font-size: 2em;"/>

Ошибка, которая отображается в окне [Список ошибок]:

Аргумент не указан для параметра 'FalsePart' в 'Открытая функция IIf (выражение как логическое значение, TruePart как объект, FalsePart как объект) как объект'.

От " IIF" до конечной кавычки #9745 есть "волнистое" подчеркивание ", указывающее на наличие синтаксической ошибки в аргументах IIf.

Я думаю, что есть некоторый конфликт с объявлением специальных символов - или QUOTEs или AMPERSAND или символ #.

Любое руководство будет оценено. Заранее спасибо.

2 ответа

Решение

ОК, друзья... Я упростил код aspx и удалил код сервера следующим образом:

<asp:Label ID="lblvalLOF_IS_DUE"  runat="server" 
Text='<%# IIf((Eval("aIsLOF_Due") = "True"), "&#9745", "&#9744") & ";"  %>'
style="font-size: 3em;"/>

Я вернулся к исходной кодировке IIf(), но отделил точку с запятой от значений, возвращаемых IIf() с конкатенацией точки с запятой после IIf(). Эта конструкция также должна работать, если цвета задаются условно в коде aspx.

Кажется, это связано с особыми случаями "&...;" в разборе aspx внутри VS.

Интересно, что в C# у меня есть ошибка

Ошибка 1| Новая строка в константе

и это также исправлено после удаления точки с запятой, поэтому этот рабочий образец

<asp:Label ID="lblvalLOF_IS_DUE"  runat="server" Text='<%# IIf((Eval("aIsLOF_Due") == "True"), "&#9745", "&#9744")%>' style="font-size: 2em;"/>

и то же самое для C#

<asp:Label ID="lblvalLOF_IS_DUE"  runat="server" Text='<%# ((Eval("aIsLOF_Due") = "True")? "&#9745": "&#9744")%>' style="font-size: 2em;"/>
Другие вопросы по тегам